p_table <- function(tab_data, ...) {
  tab_data_2 <- deparse(substitute(tab_data))
  
  table_p <- do.call(CreateTableOne, 
                     list(data = as.name(tab_data_2), includeNA = TRUE, ...))
  table_p_out <- print(table_p,
                       showAllLevels = TRUE,
                       printToggle = FALSE)
  kable(table_p_out,
        align = "c")
}
uni_var <- function(test_var, data_imp) {
                
        cat("_________________________________________________")
        cat("\n")
        cat("   \n##", test_var)
        cat("\n")
        cat("_________________________________________________")
        cat("\n")
        
        f <- as.formula(paste("Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 0)",
                              as.name(test_var),
                              sep = " ~ " ))
        
        data_imp_2 <- deparse(substitute(data_imp))
        km_fit <- do.call("survfit", list(formula = f, data = as.name(data_imp_2)))
        print(km_fit)
        cat("\n")
        print(summary(km_fit, times = c(12, 24, 36, 48, 60, 120)))
        cat("\n")
        cat("\n")
        cat("\n")
        cat("   \n## Univariable Cox Proportional Hazard Model for: ", test_var)
        cat("\n")
        cat("\n")
        n_levels <- nlevels(data_imp[[test_var]])
        if(n_levels == 1){
                print("Only one level, no Cox model performed")
                cat("\n")
        } else {
                cox_fit <- do.call("coxph", list(formula = f, data = as.name(data_imp_2)))
                print(summary(cox_fit))
                cat("\n")
                
                do.call("ggforest",
                         list(model = cox_fit, data = as.name(data_imp_2)))
        }
        cat("\n")
        cat("\n")
        cat("\n")
        cat("   \n## Unadjusted Kaplan Meier Overall Survival Curve for: ", test_var)
        p <- do.call("ggsurvplot",
                     list(fit = km_fit, data = as.name(data_imp_2),
                          palette = "jco", censor = FALSE, legend = "right",
                          linetype = "strata", xlab = "Time (Months)"))
        print(p)
}
col.width <- c(37, 10, 1, 1, 3, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 1, 4, 1, 1,
               1, 3, 2, 2, 8, 2, 5, 5, 5, 4, 5, 5, 5,4, 2, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 3,
               3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 8,
               8, 8, 2, 1, 1, 1, 1, 8, 1, 1, 8, 1, 1, 2, 2, 5, 2, 5, 3, 1, 3, 1, 8, 8, 2, 8,
               2, 8, 2, 2, 1, 8, 1, 1, 1, 1, 1, 8, 1, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 3, 1, 1,
               1, 1, 1, 1, 1, 1, 1)
col.names.abr <- c("PUF_CASE_ID", "PUF_FACILITY_ID", "FACILITY_TYPE_CD", "FACILITY_LOCATION_CD",
                   "AGE", "SEX", "RACE", "SPANISH_HISPANIC_ORIGIN", "INSURANCE_STATUS",
                   "MED_INC_QUAR_00", "NO_HSD_QUAR_00", "UR_CD_03", "MED_INC_QUAR_12", "NO_HSD_QUAR_12",
                   "UR_CD_13", "CROWFLY", "CDCC_TOTAL_BEST", "SEQUENCE_NUMBER", "CLASS_OF_CASE",
                   "YEAR_OF_DIAGNOSIS", "PRIMARY_SITE", "LATERALITY", "HISTOLOGY", "BEHAVIOR", "GRADE",
                   "DIAGNOSTIC_CONFIRMATION", "TUMOR_SIZE", "REGIONAL_NODES_POSITIVE",
                   "REGIONAL_NODES_EXAMINED", "DX_STAGING_PROC_DAYS", "RX_SUMM_DXSTG_PROC", "TNM_CLIN_T",
                   "TNM_CLIN_N", "TNM_CLIN_M", "TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M",
                   "TNM_PATH_STAGE_GROUP", "TNM_EDITION_NUMBER", "ANALYTIC_STAGE_GROUP", "CS_METS_AT_DX",
                   "CS_METS_EVAL", "CS_EXTENSION", "CS_TUMOR_SIZEEXT_EVAL", "CS_METS_DX_BONE", "CS_METS_DX_BRAIN",
                   "CS_METS_DX_LIVER", "CS_METS_DX_LUNG", "LYMPH_VASCULAR_INVASION", "CS_SITESPECIFIC_FACTOR_1",
                   "CS_SITESPECIFIC_FACTOR_2", "CS_SITESPECIFIC_FACTOR_3", "CS_SITESPECIFIC_FACTOR_4",
                   "CS_SITESPECIFIC_FACTOR_5", "CS_SITESPECIFIC_FACTOR_6", "CS_SITESPECIFIC_FACTOR_7",
                   "CS_SITESPECIFIC_FACTOR_8", "CS_SITESPECIFIC_FACTOR_9", "CS_SITESPECIFIC_FACTOR_10",
                   "CS_SITESPECIFIC_FACTOR_11", "CS_SITESPECIFIC_FACTOR_12", "CS_SITESPECIFIC_FACTOR_13",
                   "CS_SITESPECIFIC_FACTOR_14", "CS_SITESPECIFIC_FACTOR_15", "CS_SITESPECIFIC_FACTOR_16",
                   "CS_SITESPECIFIC_FACTOR_17", "CS_SITESPECIFIC_FACTOR_18", "CS_SITESPECIFIC_FACTOR_19",
                   "CS_SITESPECIFIC_FACTOR_20", "CS_SITESPECIFIC_FACTOR_21", "CS_SITESPECIFIC_FACTOR_22",
                   "CS_SITESPECIFIC_FACTOR_23", "CS_SITESPECIFIC_FACTOR_24", "CS_SITESPECIFIC_FACTOR_25",
                   "CS_VERSION_LATEST", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS", "DX_DEFSURG_STARTED_DAYS",
                   "RX_SUMM_SURG_PRIM_SITE", "RX_HOSP_SURG_APPR_2010", "RX_SUMM_SURGICAL_MARGINS",
                   "RX_SUMM_SCOPE_REG_LN_SUR", "RX_SUMM_SURG_OTH_REGDIS", "SURG_DISCHARGE_DAYS", "READM_HOSP_30_DAYS",
                   "REASON_FOR_NO_SURGERY", "DX_RAD_STARTED_DAYS", "RX_SUMM_RADIATION", "RAD_LOCATION_OF_RX",
                   "RAD_TREAT_VOL", "RAD_REGIONAL_RX_MODALITY", "RAD_REGIONAL_DOSE_CGY", "RAD_BOOST_RX_MODALITY",
                   "RAD_BOOST_DOSE_CGY", "RAD_NUM_TREAT_VOL", "RX_SUMM_SURGRAD_SEQ", "RAD_ELAPSED_RX_DAYS",
                   "REASON_FOR_NO_RADIATION", "DX_SYSTEMIC_STARTED_DAYS", "DX_CHEMO_STARTED_DAYS", "RX_SUMM_CHEMO",
                   "DX_HORMONE_STARTED_DAYS", "RX_SUMM_HORMONE", "DX_IMMUNO_STARTED_DAYS", "RX_SUMM_IMMUNOTHERAPY",
                   "RX_SUMM_TRNSPLNT_ENDO", "RX_SUMM_SYSTEMIC_SUR_SEQ", "DX_OTHER_STARTED_DAYS", "RX_SUMM_OTHER",
                   "PALLIATIVE_CARE", "RX_SUMM_TREATMENT_STATUS", "PUF_30_DAY_MORT_CD", "PUF_90_DAY_MORT_CD",
                   "DX_LASTCONTACT_DEATH_MONTHS", "PUF_VITAL_STATUS", "RX_HOSP_SURG_PRIM_SITE", "RX_HOSP_CHEMO",
                   "RX_HOSP_IMMUNOTHERAPY", "RX_HOSP_HORMONE", "RX_HOSP_OTHER", "PUF_MULT_SOURCE", "REFERENCE_DATE_FLAG",
                   "RX_SUMM_SCOPE_REG_LN_2012", "RX_HOSP_DXSTG_PROC", "PALLIATIVE_CARE_HOSP", "TUMOR_SIZE_SUMMARY",
                   "METS_AT_DX_OTHER", "METS_AT_DX_DISTANT_LN", "METS_AT_DX_BONE", "METS_AT_DX_BRAIN",
                   "METS_AT_DX_LIVER", "METS_AT_DX_LUNG", "NO_HSD_QUAR_16", "MED_INC_QUAR_16", "MEDICAID_EXPN_CODE")
#Read in data for each subsite
lip <- read_fwf('NCDBPUF_Lip.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
melanoma <- read_fwf('NCDBPUF_Melanoma.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
                       
skin <- read_fwf('NCDBPUF_OtSkin.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
hodgextr <- read_fwf('NCDBPUF_HodgExtr.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
hodgndal <- read_fwf('NCDBPUF_HodgNdal.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
NHLndal <- read_fwf('NCDBPUF_NHLNdal.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
NHLextr <- read_fwf('NCDBPUF_NHLExtr.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
breast <-  read_fwf('NCDBPUF_Breast.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
vulva <-  read_fwf('NCDBPUF_Vulva.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
vagina <-  read_fwf('NCDBPUF_Vagina.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
penis <-  read_fwf('NCDBPUF_Penis.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
otleuk <- read_fwf('NCDBPUF_OtLeuk.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
  
otheracuteleuk  <- read_fwf('NCDBPUF_OtAcLeuk.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
  
ALL  <- read_fwf('NCDBPUF_ALymLeuk.3.2016.0.dat', 
                       fwf_widths(col.width, col_names = col.names.abr),
                       col_types = cols(.default = col_character()))
#Combine data for all subsites
dat <- bind_rows(lip, melanoma, skin, hodgextr, hodgndal, NHLndal, breast, 
                 vulva, vagina, penis, NHLextr, otleuk, otheracuteleuk, ALL)
rm(lip, melanoma, skin, hodgextr, hodgndal, NHLndal, breast, vulva, vagina, 
   penis, NHLextr, otleuk, otheracuteleuk, ALL)
prim_site_text <- data_frame(PRIMARY_SITE = c(
#NHL sites
"C000", 
"C001", 
"C002", 
"C003", 
"C004", 
"C005", 
"C006", 
"C008",
"C009", 
"C019", 
"C020", 
"C021",
"C022", 
"C023", 
"C024", 
"C028", 
"C029",
"C030",
"C031",
"C039", 
"C040", 
"C041", 
"C048",
"C049", 
"C050", 
"C051", 
"C052", 
"C058", 
"C059",
"C060", 
"C061", 
"C062", 
"C068", 
"C069", 
"C079",  
"C098",
"C099",
"C111",
"C142",
"C300",
"C379",
"C420",
"C422",
"C424",
#skin/melanoma
                                 "C440", "C441", "C442", "C443", "C444", "C445",
                                 "C446", "C447", "C448", "C449",
                                 
                                 #breast - nipple
                                 "C500",
                                 
                                 #vagina/vulva
                                 "C510", "C511", "C512", "C518", "C519", "C529",
                                 
                                 #penis
                                 "C600", "C601", "C602", "C608", "C609", "C639",
"C770",
"C771",
"C772",
"C773",
"C774",
"C775",
"C778",
"C779"),
SITE_TEXT = c(
"C00.0 External Lip: Upper NOS",
"C00.1 External Lip: Lower NOS",
"C00.2 External Lip: NOS",
"C00.3 Lip: Upper Mucosa",
"C00.4 Lip: Lower Mucosa",
"C00.5 Lip: Mucosa NOS",
"C00.6 Lip: Commissure",
"C00.8 Lip: Overlapping",
"C00.9 Lip NOS",
"C01.9 Tongue: Base NOS",
"C02.0 Tongue: Dorsal NOS",
"C02.1 Tongue: Border, Tip",
"C02.2 Tongue: Ventral NOS",
"C02.3 Tongue: Anterior NOS",
"C02.4 Lingual Tonsil",
"C02.8 Tongue: Overlapping",
"C02.9 Tongue: NOS",
"C03.0 Gum: Upper",
"C03.1 Gum: Lower",
"C03.9 Gum NOS",
"C04.0 Mouth: Anterior Floor",
"C04.1 Mouth: Lateral Floor",
"C04.8 Mouth: Overlapping Floor",
"C04.9 Floor of Mouth NOS",
"C05.0 Hard Palate",
"C05.1 Soft Palate NOS",
"C05.2 Uvula",
"C05.8 Palate: Overlapping",
"C05.9 Palate NOS",
"C06.0 Cheek Mucosa",
"C06.1 Mouth: Vestibule",
"C06.2 Retromolar Area",
"C06.8 Mouth: Other Overlapping",
"C06.9 Mouth NOS",
"C07.9 Parotid Gland",
  "C09.8 Tonsil: Overlapping",
  "C09.9 Tonsil NOS",
  "C11.1 Nasopharynx: Poster Wall", 
  "C14.2 Waldeyer Ring",
  "C30.0 Nasal Cavity",
  "C37.9 Thymus",
"C42.0 Blood",
  "C42.2 Spleen",
"C42.4 Hematopoietic NOS",
 #skin
"C44.0 Skin of lip, NOS",
"C44.1 Eyelid",
"C44.2 External ear",
"C44.3 Skin of ear and unspecified parts of face",
"C44.4 Skin of scalp and neck",
"C44.5 Skin of trunk",
"C44.6 Skin of upper limb and shoulder",
"C44.7 Skin of lower limb and hip",
"C44.8 Overlapping lesion of skin",
"C44.9 Skin, NOS", 
#breast
"C50.0 Nipple",
#vulva/vagina
"C51.0 Labium majus",
"C51.1 Labium minus",
"C51.2 Clitoris",
"C51.8 Overlapping lesion of vulva",
"C51.9 Vulva, NOS",
"C52.9 Vagina, NOS",
#penis
"C60.0 Prepuce",
"C60.1 Glans penis",
"C60.2 Body of penis",
"C60.8 Overlapping lesion of penis",
"C60.9 Penis",
"C63.2 Scrotum, NOS",
  "C77.0 Lymph Nodes: HeadFaceNeck",
  "C77.1 Intrathoracic Lymph Nodes",
  "C77.2 Intra-abdominal LymphNodes",
  "C77.3 Lymph Nodes of axilla or arm ",
  "C77.4 Lymph Nodes: Leg",
  "C77.5 Pelvic Lymph Nodes",
  "C77.8 Lymph Nodes: multiple region",
  "C77.9 Lymph Node NOS"))
dat <- merge(dat, prim_site_text, by = "PRIMARY_SITE", all.x = TRUE) 
rm(prim_site_text)
# convert numeric variables from character class to numeric class
num_vars <- c("AGE", "CROWFLY", "TUMOR_SIZE", "DX_STAGING_PROC_DAYS", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS",
              "DX_DEFSURG_STARTED_DAYS", "SURG_DISCHARGE_DAYS", "DX_RAD_STARTED_DAYS",  "RAD_REGIONAL_DOSE_CGY",
              "RAD_BOOST_DOSE_CGY", "RAD_ELAPSED_RX_DAYS", "DX_SYSTEMIC_STARTED_DAYS", "DX_CHEMO_STARTED_DAYS", 
              "DX_HORMONE_STARTED_DAYS", "DX_OTHER_STARTED_DAYS", "DX_LASTCONTACT_DEATH_MONTHS",
              "RAD_NUM_TREAT_VOL")
dat[num_vars] <- lapply(dat[num_vars], as.numeric)
# convert factor variables from character class to factor class
vars <- names(dat)
fact_vars <- vars[!(vars %in% num_vars)] # basically all of the non-numerics
dat[fact_vars] <- lapply(dat[fact_vars], as.character)
dat[fact_vars] <- lapply(dat[fact_vars], as.factor)
dat <- dat %>%
        mutate(FACILITY_TYPE_F = fct_recode(FACILITY_TYPE_CD,
                                            "Community Cancer Program" = "1",
                                            "Comprehensive Comm Ca Program" = "2",
                                            "Academic/Research Program" = "3",
                                            "Integrated Network Ca Program" = "4",
                                            "Other" = "9")) %>%
        mutate(FACILITY_LOCATION_F = fct_recode(FACILITY_LOCATION_CD,
                                            "New England" = "1",
                                            "Middle Atlantic" = "2",
                                            "South Atlantic" = "3",
                                            "East North Central" = "4",
                                            "East South Central" = "5",
                                            "West North Central" = "6",
                                            "West South Central" = "7",
                                            "Mountain" = "8",
                                            "Pacific" = "9",
                                            "out of US" = "0")) %>%
        mutate(FACILITY_GEOGRAPHY = fct_collapse(FACILITY_LOCATION_CD,
                                                 "Northeast" = c("1", "2"),
                                                 "South" = c("3", "7"),
                                                 "Midwest" = c("4", "5", "6"),
                                                 "West" = c("8", "9"))) %>%
        mutate(AGE_F = cut(AGE, c(0, 54, 64, 74, 100))) %>%
        mutate(AGE_40 = cut(AGE, c(0, 40, 100))) %>%
        mutate(SEX_F = fct_recode(SEX,
                                "Male" = "1",
                                "Female" = "2")) %>%
        mutate(RACE_F = fct_collapse(RACE,
                                "White" = c("01"),
                                "Black" = c("02"),
                                "Asian" = c("04", "05", "06", "07", "08", "10", "11", "12", "13", "14", "15",
                                            "16", "17", "20", "21", "22", "25", "26", "27", "28", "30", "31",
                                            "32", "96", "97"),
                                "Other/Unk" = c("03", "98", "99"))) %>%
        mutate(HISPANIC = fct_collapse(SPANISH_HISPANIC_ORIGIN,
                                       "Yes" = c("1", "2", "3", "4", "5", "6", "7", "8"),
                                       "No" = c("0"),
                                       "Unknown" = c("9"))) %>%
        mutate(INSURANCE_F = fct_recode(INSURANCE_STATUS,
                                         "None" = "0",
                                         "Private" = "1",
                                         "Medicaid" = "2",
                                         "Medicare" = "3",
                                         "Other Government" = "4",
                                         "Unknown" = "9")) %>%
        mutate(INSURANCE_F = fct_relevel(INSURANCE_F,
                                         "Private")) %>%
        mutate(INCOME_F = fct_recode(MED_INC_QUAR_12,
                                      "Less than $38,000" = "1",
                                      "$38,000 - $47,999" = "2",
                                      "$48,000 - $62,999" = "3",
                                      "$63,000 +" = "4")) %>%
        mutate(EDUCATION_F = fct_recode(NO_HSD_QUAR_12,
                                        "21% or more" = "1",
                                        "13 - 20.9%" = "2",
                                        "7 - 12.9%" = "3",
                                        "Less than 7%" = "4")) %>%
        mutate(U_R_F = fct_collapse(UR_CD_13,
                                    "Metro" = c("1", "2", "3"),
                                    "Urban" = c("4", "5", "6", "7"),
                                    "Rural" = c("8", "9"))) %>%
        mutate(CLASS_OF_CASE_F = fct_collapse(CLASS_OF_CASE,
                                              All_Part_Prim = c("10", "11", "12", "13",
                                                                "14", "20", "21", "22"),
                                              Other_Facility = c("00"))) %>%
        mutate(GRADE_F = fct_recode(GRADE,
                                  "Gr I: Well Diff" = "1",
                                  "Gr II: Mod Diff" = "2",
                                  "Gr III: Poor Diff" = "3",
                                  "Gr IV: Undiff/Anaplastic" = "4",
                                  "NA/Unkown" = "9")) %>%
        mutate(HISTOLOGY_F = fct_infreq(HISTOLOGY)) %>%
        mutate(HISTOLOGY_F = factor(HISTOLOGY_F)) %>%
        mutate(HISTOLOGY_F_LIM = fct_lump(HISTOLOGY_F, prop = 0.05)) %>%
        mutate(TNM_CLIN_T = fct_recode(TNM_CLIN_T,
                                       "N_A" = "88")) %>%
        mutate(TNM_CLIN_T = fct_relevel(TNM_CLIN_T,
                                        "1")) %>%
        mutate(TNM_CLIN_N = fct_recode(TNM_CLIN_N,
                                       "N_A" = "88")) %>%
        mutate(TNM_CLIN_M = fct_recode(TNM_CLIN_M,
                                       "N_A" = "88")) %>%
        mutate(TNM_PATH_T = fct_recode(TNM_PATH_T,
                                       "N_A" = "88")) %>%
        mutate(TNM_PATH_T = fct_relevel(TNM_PATH_T,
                                        "1")) %>%
        mutate(TNM_PATH_N = fct_recode(TNM_PATH_N,
                                       "N_A" = "88")) %>%
        mutate(TNM_PATH_M = fct_recode(TNM_PATH_M,
                                       "N_A" = "88")) %>%
        mutate(TNM_CLIN_STAGE_GROUP = fct_recode(TNM_CLIN_STAGE_GROUP,
                                       "N_A" = "88")) %>%
        mutate(TNM_PATH_STAGE_GROUP = fct_recode(TNM_PATH_STAGE_GROUP,
                                       "N_A" = "88")) %>%
        mutate(MARGINS = fct_recode(RX_SUMM_SURGICAL_MARGINS,
                                    "No Residual" = "0",
                                    "Residual, NOS" = "1",
                                    "Microscopic Resid" = "2",
                                    "Macroscopic Resid" = "3",
                                    "Not evaluable" = "7",
                                    "No surg" = "8",
                                    "Unknown" = "9")) %>%
        mutate(MARGINS_YN = fct_collapse(RX_SUMM_SURGICAL_MARGINS,
                                         "Yes" = c("1", "2", "3"),
                                         "No" = c("0"),
                                         "No surg/Unk/NA" = c("7", "8", "9"))) %>%
        mutate(READM_HOSP_30_DAYS_F = fct_recode(READM_HOSP_30_DAYS,
                                                 "No_Surg_or_No_Readmit" = "0",
                                                 "Unplan_Readmit_Same" = "1",
                                                 "Plan_Readmit_Same" = "2",
                                                 "PlanUnplan_Same" = "3",
                                                 "Unknown" = "4")) %>%
        mutate(RX_SUMM_RADIATION_F = fct_recode(RX_SUMM_RADIATION,
                                                "None" = "0",
                                                "Beam Radiation" = "1",
                                                "Radioactive Implants" = "2",
                                                "Radioisotopes" = "3",
                                                "Beam + Imp or Isotopes" = "4",
                                                "Radiation, NOS" = "5",
                                                "Unknown" = "9")) %>%
        mutate(PUF_30_DAY_MORT_CD_F = fct_recode(PUF_30_DAY_MORT_CD,
                                                 "Alive_30" = "0",
                                                 "Dead_30" = "1",
                                                 "Unknown" = "9")) %>%
        mutate(PUF_90_DAY_MORT_CD_F = fct_recode(PUF_90_DAY_MORT_CD,
                                                 "Alive_90" = "0",
                                                 "Dead_90" = "1",
                                                 "Unknown" = "9")) %>%
        mutate(LYMPH_VASCULAR_INVASION_F = fct_recode(LYMPH_VASCULAR_INVASION,
                                                      "Neg_LymphVasc_Inv" = "0",
                                                      "Pos_LumphVasc_Inv" = "1",
                                                      "N_A" = "8",
                                                      "Unknown" = "9")) %>%
        mutate(RX_HOSP_SURG_APPR_2010_F = fct_recode(RX_HOSP_SURG_APPR_2010,
                                                     "No_Surg" = "0",
                                                     "Robot_Assist" = "1",
                                                     "Robot_to_Open" = "2",
                                                     "Endo_Lap" = "3",
                                                     "Endo_Lap_to_Open" = "4",
                                                     "Open_Unknown" = "5",
                                                     "Unknown" = "9")) %>%
        mutate(All = "All") %>%
        mutate(All = factor(All)) %>%
        mutate(REASON_FOR_NO_SURGERY_F = fct_recode(REASON_FOR_NO_SURGERY,
                                                    "Surg performed" = "0",
                                                    "Surg not recommended" = "1",
                                                    "No surg due to pt factors" = "2",
                                                    "No surg, pt died" = "5",
                                                    "Surg rec, not done" = "6",
                                                    "Surg rec, pt refused" = "7",
                                                    "Surg rec, unk if done" = "8",
                                                    "Unknown" = "9")) %>%
        mutate(SURGERY_YN = ifelse(REASON_FOR_NO_SURGERY == "0",
                                   "Yes",
                                   ifelse(REASON_FOR_NO_SURGERY == "9",
                                          "Ukn",
                                          "No"))) %>%
        mutate(SURG_TF = case_when(SURGERY_YN == "Yes" ~ TRUE,
                             SURGERY_YN == "No" ~ FALSE,
                             TRUE ~ NA))  %>%
        mutate(REASON_FOR_NO_RADIATION_F = fct_recode(REASON_FOR_NO_RADIATION,
                                                    "Rad performed" = "0",
                                                    "Rad not recommended" = "1",
                                                    "No Rad due to pt factors" = "2",
                                                    "No Rad, pt died" = "5",
                                                    "Rad rec, not done" = "6",
                                                    "Rad rec, pt refused" = "7",
                                                    "Rad rec, unk if done" = "8",
                                                    "Unknown" = "9")) %>%
        mutate(RADIATION_YN = ifelse(REASON_FOR_NO_RADIATION == "0",
                                   "Yes",
                                   ifelse(REASON_FOR_NO_RADIATION == "9",
                                          NA,
                                          "No"))) %>%
        mutate(SURGRAD_SEQ_F = fct_recode(RX_SUMM_SURGRAD_SEQ,
                                                   "None or Surg or Rad" = "0",
                                                   "Rad before Surg" = "2",
                                                   "Surg before Rad" = "3",
                                                   "Rad before and after Surg" = "4",
                                                   "Intraop Rad" = "5",
                                                   "Intraop Rad plus other" = "6",
                                                   "Unknown" = "9")) %>%
        mutate(SURG_RAD_SEQ = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
                                     "Surg Alone",
                                     ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
                                            "Rad Alone",
                                            ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0",
                                                   "No Treatment",
                                                   ifelse(RX_SUMM_SURGRAD_SEQ == "2",
                                                          "Rad then Surg",
                                                          ifelse(RX_SUMM_SURGRAD_SEQ == "3",
                                                                 "Surg then Rad",
                                                                 ifelse(RX_SUMM_SURGRAD_SEQ == "4",
                                                                        "Rad before and after Surg",
                                                                        "Other"))))))) %>%
        mutate(SURG_RAD_SEQ = fct_relevel(SURG_RAD_SEQ,
                                          "Surg Alone",
                                          "Surg then Rad",
                                          "Rad Alone")) %>%
        mutate(CHEMO_YN = fct_collapse(RX_SUMM_CHEMO,
                                       "No" = c("00", "82", "85", "86", "87"),
                                       "Yes" = c("01", "02", "03"),
                                       "Ukn" = c("88", "99"))) %>%
        mutate(IMMUNO_YN = fct_collapse(RX_SUMM_IMMUNOTHERAPY,
                                       "No" = c("00", "82", "85", "86", "87"),
                                       "Yes" = c("01"),
                                       "Ukn" = c("88", "99"))) %>%
        mutate(SURG_RAD_SEQ_C = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
                                     "Surg, No rad, No Chemo",
                                     ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
                                            "Rad, No Surg, No Chemo",
                                            ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
                                                   "No Surg, No Rad, No Chemo",
                                                   ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "No",
                                                          "Rad then Surg, No Chemo",
                                                          ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "No",
                                                                 "Surg then Rad, No Chemo",
                                                                 ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "No",
                                                                        "Rad before and after Surg, No Chemo",
                                ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
                                       "Surg, No rad, Yes Chemo",
                                       ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
                                              "Rad, No Surg, Yes Chemo",
                                              ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
                                                     "No Surg, No Rad, Yes Chemo",
                                                     ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "Yes",
                                                            "Rad then Surg, Yes Chemo",
                                                            ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "Yes",
                                                                   "Surg then Rad, Yes Chemo",
                                                                   ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "Yes",
                                                                          "Rad before and after Surg, Yes Chemo",
                                                                          "Other"))))))))))))) %>%
        mutate(SURG_RAD_SEQ_C = fct_infreq(SURG_RAD_SEQ_C)) %>%
        mutate(T_SIZE = as.numeric(TUMOR_SIZE)) %>%
        mutate(T_SIZE = ifelse(T_SIZE == 0,
                                "No Tumor",
                                ifelse(T_SIZE > 0 & T_SIZE < 10 | T_SIZE == 991,
                                       "< 1 cm",
                                       ifelse(T_SIZE >= 10 & T_SIZE < 20 | T_SIZE == 992,
                                              "1-2 cm",
                                              ifelse(T_SIZE >= 20 & T_SIZE < 30 | T_SIZE == 993,
                                                     "2-3 cm",
                                                     ifelse(T_SIZE >= 30 & T_SIZE < 40 | T_SIZE == 994,
                                                            "3-4 cm",
                                                            ifelse(T_SIZE >= 40 & T_SIZE < 50 | T_SIZE == 995,
                                                                   "4-5 cm",
                                                                   ifelse(T_SIZE >= 50 & T_SIZE < 60 | T_SIZE == 996,
                                                                          "5-6 cm",
                                                                          ifelse(T_SIZE >= 60 & T_SIZE <= 987 |
                                                                                         T_SIZE == 980 | T_SIZE == 989 |
                                                                                         T_SIZE == 997,
                                                                          ">6 cm",
                                                                          ifelse(T_SIZE == 988 | T_SIZE == 999,
                                                                                 "NA_unk",
                                                                                 "Microscopic focus")))))))))) %>%
        mutate(T_SIZE = factor(T_SIZE)) %>%
        mutate(T_SIZE = fct_relevel(T_SIZE,
                                     "No Tumor", "Microscopic focus", "< 1 cm", "1-2 cm", "2-3 cm", "3-4 cm",
                                       "4-5 cm", "5-6 cm", ">6 cm", "NA_unk")) %>%
        mutate(mets_at_dx = case_when(CS_METS_DX_LUNG == "1" ~ "Lung",
                                      CS_METS_DX_BONE == "1" ~ "Bone",
                                      CS_METS_DX_BRAIN == "1" ~ "Brain",
                                      CS_METS_DX_LIVER == "1" ~ "Liver",
                                      TRUE ~ "None/Other/Unk/NA")) %>%
        mutate(MEDICAID_EXPN_CODE = fct_recode(MEDICAID_EXPN_CODE,
                                               "Non-Expansion State" = "0",
                                               "Jan 2014 Expansion States" = "1",
                                               "Early Expansion States (2010-13)" = "2",
                                               "Late Expansion States (> Jan 2014)" = "3",
                                               "Suppressed for Ages 0 - 39" = "9"))  %>%
        mutate(EXPN_GROUP =  case_when(MEDICAID_EXPN_CODE  %in% c("Jan 2014 Expansion States") & 
                                         YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Post-Expansion",
                                       
                                       MEDICAID_EXPN_CODE  %in% c("Jan 2014 Expansion States") & 
                                         YEAR_OF_DIAGNOSIS %in% 
                                          c("2004", "2005", "2006", "2007", "2008", 
                                            "2009", "2010", "2011", "2012", "2013") ~ "Pre-Expansion",
               
                                       MEDICAID_EXPN_CODE  %in% c("Early Expansion States (2010-13)") & 
                                         YEAR_OF_DIAGNOSIS %in% c("2010", "2011", "2012", "2013", "2014", "2015") ~ "Post-Expansion",
                                       
                                        MEDICAID_EXPN_CODE  %in% c("Early Expansion States (2010-13)") & 
                                         YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008", "2009") ~ "Pre-Expansion",
                                       MEDICAID_EXPN_CODE %in% c("Non-Expansion State") ~ "Pre-Expansion",
                                       MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") ~ "Pre-Expansion",
                    
                                       MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") & 
                                        YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Exclude",
                                       
                                       MEDICAID_EXPN_CODE == "Suppressed for Ages 0 - 39" ~ "Exclude")) %>%
  
  mutate(pre_2014 = YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008", 
                                            "2009", "2010", "2011", "2012", "2013")) %>%
  
  mutate(mets_at_dx_F = ifelse(mets_at_dx == "None/Other/Unk/NA", FALSE, TRUE)) %>% 
  
  mutate(Tx_YN = ifelse(SURG_RAD_SEQ == "No Treatment" & CHEMO_YN == "No" & 
                          IMMUNO_YN == "No", FALSE, 
                        ifelse(CHEMO_YN == "Ukn", NA, 
                               TRUE)))
fact_vars_2 <- c("FACILITY_TYPE_F", "FACILITY_LOCATION_F", "AGE_F", "SEX_F", "RACE_F",
                 "HISPANIC", "INSURANCE_F", "INCOME_F", "EDUCATION_F", "U_R_F",
                 "CDCC_TOTAL_BEST", "CLASS_OF_CASE_F", "YEAR_OF_DIAGNOSIS", "PRIMARY_SITE", "HISTOLOGY",
                 "BEHAVIOR", "GRADE_F", "TNM_CLIN_T", "TNM_CLIN_N", "TNM_CLIN_M",
                 "TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M", "TNM_PATH_STAGE_GROUP",
                 "MARGINS", "READM_HOSP_30_DAYS_F", "RX_SUMM_RADIATION_F", "PUF_30_DAY_MORT_CD_F",
                 "PUF_90_DAY_MORT_CD_F", "LYMPH_VASCULAR_INVASION_F", "RX_HOSP_SURG_APPR_2010_F", "mets_at_dx")
dat <- dat %>%
        mutate_at(fact_vars_2, funs(factor(.)))

Extract Data of Interest

# Non-Hodgkin Lymphoma Sites
site_code <- c( 
#additional sites
 #lip  
  "C000", "C001", "C002", "C003", "C004", "C005","C006", "C008","C009",
                                  
                                 
#skin/melanoma
  "C440", "C441", "C442", "C443", "C444", "C445", "C446", "C447", "C448", "C449",
                                 
 #breast - nipple
  "C500",
                                 
#vagina/vulva
  "C510", "C511", "C512", "C518", "C519", "C529",
                                 
#penis
 "C600", "C601", "C602", "C608", "C609", "C639")
#mycosis fungoides, Sezary syndrome, subcutaneous panniculitis-like T-cell lymphoma,
#cutaneous T-cell lymphoma, NOS, primary cutaneous CD30+T-cell lymphoma, 
#NK/T-cell lymphoma, primary cutaneous gamma-delta T-cell lymphoma, 
#and blastic NK cell lymphoma, respectively
#"9700" = Mycosis Fungoides
  # pagetoid reticulosis
#"9701" = Sezary Syndrome
  # Sezary disease
#"9708" = Subcutaneous panniculitislike T-cell lymphoma
#"9709" = Cutaneous T-cell lymphoma, NOS 
  # Cutaneous lymphoma, NOS (C44._); Primary cutaneous CD4-positive small/medium
  # T-cell lymphoma; Primary cutaneous CD8-positive aggressive
  # epidermotropic cytotoxic T-cell lymphoma
#"9718" = Primary cutaneous CD30+ T-cell lymphoproliferative disorder 
  # Lymphomatoid papulosis (C44._), Primary cutaneous anaplastic large cell,
  # lymphoma (C44._), Primary cutaneous CD30+ large T-cell lymphoma (C44._)
#"9726" = Primary cutaneous gamma-delta T-cell lymphoma
histo_code <- c("9708")
behavior_code <- c("3")
data <- dat %>%
        filter(BEHAVIOR %in% behavior_code) %>%
        filter(PRIMARY_SITE %in% site_code) %>%
        filter(HISTOLOGY %in% histo_code) %>%
        #filter(AGE >= 18) %>%
        filter(is.na(PUF_VITAL_STATUS) == FALSE) %>%
        filter(is.na(DX_LASTCONTACT_DEATH_MONTHS) == FALSE)  %>%
        filter(SEQUENCE_NUMBER == "00") 
#file_path <- c("/Users/beastatlife/Google Drive/Penn/Research/Barbieri/NCDB")
#save(data,
#      file = paste0(file_path, "/CTCL_data.Rda"))
#load("SPTCL_data.Rda")

Data including skin tumors was obtained from the NCBD on October 7, 2019. Cases that were included in this analysis were those with:

  1. Site codes: C000, C001, C002, C003, C004, C005, C006, C008, C009, C440, C441, C442, C443, C444, C445, C446, C447, C448, C449, C500, C510, C511, C512, C518, C519, C529, C600, C601, C602, C608, C609, C639
  2. Histology codes: 9726
  3. Behavior codes: 3

Patients were excluded if they didn’t have values for either follow up or vital status.

Patients were excluded if they had surgery to a distant site using RX_SUMM_SURG_OTH_REGDIS. This was done to avoid confounding of different surgical procedures. We are only interested in surgery at the primary site. These distant site surgeries were being counted in the surgery/radiation sequence and thus to simplify analysis they were removed.

data %>%
        CreateTableOne(data = .,
                     vars = c("RX_SUMM_SURG_OTH_REGDIS"),
                     includeNA = TRUE) %>%
        print(.,
              showAllLevels = TRUE)
                             
                              level Overall   
  n                                 89        
  RX_SUMM_SURG_OTH_REGDIS (%) 0     87 (97.8) 
                              1      0 ( 0.0) 
                              2      0 ( 0.0) 
                              3      0 ( 0.0) 
                              4      0 ( 0.0) 
                              5      0 ( 0.0) 
                              9      2 ( 2.2) 
data <- data %>%
        filter(RX_SUMM_SURG_OTH_REGDIS == "0") 

Race was grouped as white, black, asian, other/unknown Stage was grouped into 0, I, II, III, IV, NA_Unknown, stage 0 was removed Whether surgery was performed was based on the REASON_FOR_NO_SURGERY variable. The SURGERY_YN variable was classified as ‘Yes’, ‘No’, or ‘Unknown’.

Whether radiation was performed was based on the REASON_FOR_NO_RADIATION variable. The RADIATION_YN variable was classified as ‘Yes’, ‘No’, or ‘Unknown’.

Table of variables for all cases:

data <- data %>% droplevels()
p_table(data,
        vars = c("FACILITY_TYPE_F", "FACILITY_LOCATION_F", "FACILITY_GEOGRAPHY",  "AGE", "AGE_F", "AGE_40",
                 "SEX_F", "RACE_F", "HISPANIC", "INSURANCE_F", 
                 "INCOME_F", "EDUCATION_F", "U_R_F", "CROWFLY", "CDCC_TOTAL_BEST",
                 "SITE_TEXT",  "HISTOLOGY", "BEHAVIOR", "GRADE_F", 
                 "DX_STAGING_PROC_DAYS", "TNM_CLIN_T", "TNM_CLIN_N", "TNM_CLIN_M",
                 "TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M",
                 "TNM_PATH_STAGE_GROUP", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS",
                 "DX_DEFSURG_STARTED_DAYS", "MARGINS", "MARGINS_YN", "SURG_DISCHARGE_DAYS",
                 "READM_HOSP_30_DAYS_F", "RX_SUMM_RADIATION_F", "PUF_30_DAY_MORT_CD_F",
                 "PUF_90_DAY_MORT_CD_F", "DX_LASTCONTACT_DEATH_MONTHS", 
                 "LYMPH_VASCULAR_INVASION_F", "RX_HOSP_SURG_APPR_2010_F", "SURG_RAD_SEQ",
                 "SURG_RAD_SEQ_C", "SURGERY_YN", "RADIATION_YN", "CHEMO_YN", "IMMUNO_YN", "Tx_YN", "mets_at_dx",
                 "MEDICAID_EXPN_CODE", "EXPN_GROUP", "YEAR_OF_DIAGNOSIS"))
level Overall
n 87
FACILITY_TYPE_F (%) Comprehensive Comm Ca Program 12 ( 13.8)
Academic/Research Program 35 ( 40.2)
Integrated Network Ca Program 7 ( 8.0)
NA 33 ( 37.9)
FACILITY_LOCATION_F (%) New England 7 ( 8.0)
Middle Atlantic 11 ( 12.6)
South Atlantic 11 ( 12.6)
East North Central 8 ( 9.2)
East South Central 3 ( 3.4)
West North Central 5 ( 5.7)
West South Central 3 ( 3.4)
Mountain 2 ( 2.3)
Pacific 4 ( 4.6)
NA 33 ( 37.9)
FACILITY_GEOGRAPHY (%) Northeast 18 ( 20.7)
South 14 ( 16.1)
Midwest 16 ( 18.4)
West 6 ( 6.9)
NA 33 ( 37.9)
AGE (mean (sd)) 45.16 (18.85)
AGE_F (%) (0,54] 57 ( 65.5)
(54,64] 20 ( 23.0)
(64,74] 3 ( 3.4)
(74,100] 7 ( 8.0)
AGE_40 (%) (0,40] 34 ( 39.1)
(40,100] 53 ( 60.9)
SEX_F (%) Male 33 ( 37.9)
Female 54 ( 62.1)
RACE_F (%) White 50 ( 57.5)
Black 27 ( 31.0)
Other/Unk 2 ( 2.3)
Asian 8 ( 9.2)
HISPANIC (%) No 78 ( 89.7)
Yes 6 ( 6.9)
Unknown 3 ( 3.4)
INSURANCE_F (%) Private 52 ( 59.8)
None 2 ( 2.3)
Medicaid 11 ( 12.6)
Medicare 19 ( 21.8)
Other Government 1 ( 1.1)
Unknown 2 ( 2.3)
INCOME_F (%) Less than $38,000 16 ( 18.4)
$38,000 - $47,999 15 ( 17.2)
$48,000 - $62,999 28 ( 32.2)
$63,000 + 28 ( 32.2)
EDUCATION_F (%) 21% or more 14 ( 16.1)
13 - 20.9% 27 ( 31.0)
7 - 12.9% 22 ( 25.3)
Less than 7% 24 ( 27.6)
U_R_F (%) Metro 73 ( 83.9)
Urban 11 ( 12.6)
NA 3 ( 3.4)
CROWFLY (mean (sd)) 42.29 (107.00)
CDCC_TOTAL_BEST (%) 0 71 ( 81.6)
1 14 ( 16.1)
2 1 ( 1.1)
3 1 ( 1.1)
SITE_TEXT (%) C44.3 Skin of ear and unspecified parts of face 5 ( 5.7)
C44.5 Skin of trunk 12 ( 13.8)
C44.6 Skin of upper limb and shoulder 8 ( 9.2)
C44.7 Skin of lower limb and hip 17 ( 19.5)
C44.8 Overlapping lesion of skin 6 ( 6.9)
C44.9 Skin, NOS 39 ( 44.8)
HISTOLOGY (%) 9708 87 (100.0)
BEHAVIOR (%) 3 87 (100.0)
GRADE_F (%) 5 79 ( 90.8)
NA/Unkown 8 ( 9.2)
DX_STAGING_PROC_DAYS (mean (sd)) 3.60 (13.59)
TNM_CLIN_T (%) N_A 86 ( 98.9)
NA 1 ( 1.1)
TNM_CLIN_N (%) N_A 86 ( 98.9)
NA 1 ( 1.1)
TNM_CLIN_M (%) N_A 86 ( 98.9)
NA 1 ( 1.1)
TNM_CLIN_STAGE_GROUP (%) 1 12 ( 13.8)
1A 14 ( 16.1)
1B 3 ( 3.4)
2 7 ( 8.0)
2A 5 ( 5.7)
3 3 ( 3.4)
3A 1 ( 1.1)
3B 2 ( 2.3)
4 12 ( 13.8)
4A 7 ( 8.0)
4B 9 ( 10.3)
99 12 ( 13.8)
TNM_PATH_T (%) N_A 86 ( 98.9)
NA 1 ( 1.1)
TNM_PATH_N (%) N_A 86 ( 98.9)
NA 1 ( 1.1)
TNM_PATH_M (%) N_A 84 ( 96.6)
NA 3 ( 3.4)
TNM_PATH_STAGE_GROUP (%) 1 3 ( 3.4)
1A 4 ( 4.6)
1B 2 ( 2.3)
2 2 ( 2.3)
2A 1 ( 1.1)
3 1 ( 1.1)
3A 1 ( 1.1)
3B 1 ( 1.1)
4 4 ( 4.6)
4A 1 ( 1.1)
4B 3 ( 3.4)
99 62 ( 71.3)
NA 2 ( 2.3)
DX_RX_STARTED_DAYS (mean (sd)) 42.78 (50.20)
DX_SURG_STARTED_DAYS (mean (sd)) 3.40 (10.30)
DX_DEFSURG_STARTED_DAYS (mean (sd)) 3.40 (10.30)
MARGINS (%) No Residual 4 ( 4.6)
Residual, NOS 1 ( 1.1)
Microscopic Resid 1 ( 1.1)
Macroscopic Resid 1 ( 1.1)
Not evaluable 5 ( 5.7)
No surg 66 ( 75.9)
Unknown 9 ( 10.3)
MARGINS_YN (%) No 4 ( 4.6)
Yes 3 ( 3.4)
No surg/Unk/NA 80 ( 92.0)
SURG_DISCHARGE_DAYS (mean (sd)) 1.94 (5.51)
READM_HOSP_30_DAYS_F (%) No_Surg_or_No_Readmit 84 ( 96.6)
9 3 ( 3.4)
RX_SUMM_RADIATION_F (%) None 76 ( 87.4)
Beam Radiation 10 ( 11.5)
Unknown 1 ( 1.1)
PUF_30_DAY_MORT_CD_F (%) Alive_30 19 ( 21.8)
Dead_30 1 ( 1.1)
NA 67 ( 77.0)
PUF_90_DAY_MORT_CD_F (%) Alive_90 19 ( 21.8)
Dead_90 1 ( 1.1)
NA 67 ( 77.0)
DX_LASTCONTACT_DEATH_MONTHS (mean (sd)) 63.33 (48.86)
LYMPH_VASCULAR_INVASION_F (%) N_A 24 ( 27.6)
NA 63 ( 72.4)
RX_HOSP_SURG_APPR_2010_F (%) No_Surg 20 ( 23.0)
Open_Unknown 4 ( 4.6)
NA 63 ( 72.4)
SURG_RAD_SEQ (%) Surg Alone 19 ( 21.8)
Surg then Rad 1 ( 1.1)
Rad Alone 9 ( 10.3)
No Treatment 55 ( 63.2)
Other 3 ( 3.4)
SURG_RAD_SEQ_C (%) Surg, No rad, No Chemo 8 ( 9.2)
Surg then Rad, Yes Chemo 1 ( 1.1)
Surg, No rad, Yes Chemo 9 ( 10.3)
No Surg, No Rad, Yes Chemo 40 ( 46.0)
No Surg, No Rad, No Chemo 15 ( 17.2)
Other 5 ( 5.7)
Rad, No Surg, Yes Chemo 3 ( 3.4)
Rad, No Surg, No Chemo 6 ( 6.9)
SURGERY_YN (%) No 65 ( 74.7)
Ukn 2 ( 2.3)
Yes 20 ( 23.0)
RADIATION_YN (%) No 76 ( 87.4)
Yes 10 ( 11.5)
NA 1 ( 1.1)
CHEMO_YN (%) No 29 ( 33.3)
Yes 55 ( 63.2)
Ukn 3 ( 3.4)
IMMUNO_YN (%) No 79 ( 90.8)
Yes 8 ( 9.2)
Tx_YN (%) FALSE 14 ( 16.1)
TRUE 70 ( 80.5)
NA 3 ( 3.4)
mets_at_dx (%) None/Other/Unk/NA 87 (100.0)
MEDICAID_EXPN_CODE (%) Non-Expansion State 20 ( 23.0)
Jan 2014 Expansion States 16 ( 18.4)
Early Expansion States (2010-13) 14 ( 16.1)
Late Expansion States (> Jan 2014) 4 ( 4.6)
Suppressed for Ages 0 - 39 33 ( 37.9)
EXPN_GROUP (%) Exclude 33 ( 37.9)
Post-Expansion 4 ( 4.6)
Pre-Expansion 50 ( 57.5)
YEAR_OF_DIAGNOSIS (%) 2004 9 ( 10.3)
2005 12 ( 13.8)
2006 8 ( 9.2)
2007 11 ( 12.6)
2008 15 ( 17.2)
2009 8 ( 9.2)
2010 9 ( 10.3)
2011 6 ( 6.9)
2013 1 ( 1.1)
2015 8 ( 9.2)
preExpMedicare  <- nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion" & INSURANCE_F == "Medicare"))
postExpMedicare <- nrow(data %>% filter(EXPN_GROUP == "Post-Expansion" & INSURANCE_F == "Medicare"))
# p = 0.25 when comparing change in proportion of patients with Medicare before and after ACA expansion
prop.test(c(preExpMedicare, postExpMedicare), 
          c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% filter(EXPN_GROUP == "Post-Expansion"))))
Chi-squared approximation may be incorrect

    2-sample test for equality of proportions with continuity correction

data:  c(preExpMedicare, postExpMedicare) out of c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% c(preExpMedicare, postExpMedicare) out of     filter(EXPN_GROUP == "Post-Expansion")))
X-squared = 0.072544, df = 1, p-value = 0.7877
alternative hypothesis: two.sided
95 percent confidence interval:
 -0.841187  0.441187
sample estimates:
prop 1 prop 2 
   0.3    0.5 
preExpNoInsurance <- nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion") %>% 
                            filter(INSURANCE_F == "None"))
postExpNoInsurance <- nrow(data %>% filter(EXPN_GROUP == "Post-Expansion") %>% 
                             filter(INSURANCE_F == "None"))
# Significant decrease in the overall proportion of patients without insurance after ACA expansion 
prop.test(c(preExpNoInsurance, postExpNoInsurance), 
          c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% filter(EXPN_GROUP == "Post-Expansion"))))
Chi-squared approximation may be incorrect

    2-sample test for equality of proportions with continuity correction

data:  c(preExpNoInsurance, postExpNoInsurance) out of c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% c(preExpNoInsurance, postExpNoInsurance) out of     filter(EXPN_GROUP == "Post-Expansion")))
X-squared = 1.0712e-31, df = 1, p-value = 1
alternative hypothesis: two.sided
95 percent confidence interval:
 -0.03880531  0.07880531
sample estimates:
prop 1 prop 2 
  0.02   0.00 
p_table(no_Excludes, strata = "EXPN_GROUP", vars = "DX_RX_STARTED_DAYS")

level Post-Expansion Pre-Expansion p test
n 248 1137
DX_RX_STARTED_DAYS (mean (sd)) 48.96 (44.78) 48.91 (143.60) 0.996

data <- data %>% mutate(Insured = INSURANCE_F != "Unknown")

Kaplan Meier Analysis

All

uni_var(test_var = "All", data_imp = data)
_________________________________________________
   
## All
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ All, data = data)

      n  events  median 0.95LCL 0.95UCL 
     87      23      NA      NA      NA 

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ All, data = data)

 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     69       7    0.915  0.0308        0.856        0.977
   24     55      12    0.753  0.0495        0.662        0.856
   36     52       1    0.738  0.0506        0.646        0.844
   48     48       1    0.724  0.0517        0.629        0.832
   60     47       0    0.724  0.0517        0.629        0.832
  120     14       2    0.688  0.0550        0.588        0.804



   
## Univariable Cox Proportional Hazard Model for:  All

[1] "Only one level, no Cox model performed"




   
## Unadjusted Kaplan Meier Overall Survival Curve for:  All

Facility Type

uni_var(test_var = "FACILITY_TYPE_F", data_imp = data)
_________________________________________________
   
## FACILITY_TYPE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_TYPE_F, data = data)

   33 observations deleted due to missingness 
                                               n events median 0.95LCL 0.95UCL
FACILITY_TYPE_F=Comprehensive Comm Ca Program 12      4     NA    20.9      NA
FACILITY_TYPE_F=Academic/Research Program     35     13     NA    30.1      NA
FACILITY_TYPE_F=Integrated Network Ca Program  7      3     NA    21.1      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_TYPE_F, data = data)

33 observations deleted due to missingness 
                FACILITY_TYPE_F=Comprehensive Comm Ca Program 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       1    0.917  0.0798        0.773            1
   24      7       2    0.722  0.1380        0.496            1
   36      7       0    0.722  0.1380        0.496            1
   48      7       0    0.722  0.1380        0.496            1
   60      7       0    0.722  0.1380        0.496            1
  120      1       1    0.602  0.1590        0.358            1

                FACILITY_TYPE_F=Academic/Research Program 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     27       5    0.848  0.0628        0.733        0.980
   24     20       6    0.658  0.0840        0.512        0.845
   36     19       1    0.625  0.0860        0.477        0.818
   48     17       1    0.592  0.0875        0.443        0.791
   60     16       0    0.592  0.0875        0.443        0.791
  120      7       0    0.592  0.0875        0.443        0.791

                FACILITY_TYPE_F=Integrated Network Ca Program 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      7       0    1.000   0.000        1.000            1
   24      4       3    0.571   0.187        0.301            1
   36      4       0    0.571   0.187        0.301            1
   48      4       0    0.571   0.187        0.301            1
   60      4       0    0.571   0.187        0.301            1
  120      1       0    0.571   0.187        0.301            1




   
## Univariable Cox Proportional Hazard Model for:  FACILITY_TYPE_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_TYPE_F, data = data)

  n= 54, number of events= 20 
   (33 observations deleted due to missingness)

                                                coef exp(coef) se(coef)     z Pr(>|z|)
FACILITY_TYPE_FAcademic/Research Program     0.16823   1.18321  0.57234 0.294    0.769
FACILITY_TYPE_FIntegrated Network Ca Program 0.07261   1.07532  0.76489 0.095    0.924

                                             exp(coef) exp(-coef) lower .95 upper .95
FACILITY_TYPE_FAcademic/Research Program         1.183     0.8452    0.3854     3.633
FACILITY_TYPE_FIntegrated Network Ca Program     1.075     0.9300    0.2401     4.815

Concordance= 0.533  (se = 0.058 )
Rsquare= 0.002   (max possible= 0.933 )
Likelihood ratio test= 0.1  on 2 df,   p=0.953
Wald test            = 0.09  on 2 df,   p=0.9539
Score (logrank) test = 0.09  on 2 df,   p=0.9538
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  FACILITY_TYPE_F

Facility Location

uni_var(test_var = "FACILITY_LOCATION_F", data_imp = data)
_________________________________________________
   
## FACILITY_LOCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_LOCATION_F, data = data)

   33 observations deleted due to missingness 
                                        n events median 0.95LCL 0.95UCL
FACILITY_LOCATION_F=New England         7      4   30.1   15.38      NA
FACILITY_LOCATION_F=Middle Atlantic    11      3     NA   20.86      NA
FACILITY_LOCATION_F=South Atlantic     11      3     NA   12.02      NA
FACILITY_LOCATION_F=East North Central  8      3     NA    6.05      NA
FACILITY_LOCATION_F=East South Central  3      0     NA      NA      NA
FACILITY_LOCATION_F=West North Central  5      3   80.0   41.26      NA
FACILITY_LOCATION_F=West South Central  3      2   21.1    1.05      NA
FACILITY_LOCATION_F=Mountain            2      2   15.7   12.39      NA
FACILITY_LOCATION_F=Pacific             4      0     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_LOCATION_F, data = data)

33 observations deleted due to missingness 
                FACILITY_LOCATION_F=New England 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      6       1    0.857   0.132        0.633            1
   24      4       2    0.571   0.187        0.301            1
   36      3       1    0.429   0.187        0.182            1
   48      3       0    0.429   0.187        0.182            1
   60      2       0    0.429   0.187        0.182            1

                FACILITY_LOCATION_F=Middle Atlantic 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       0    1.000   0.000        1.000            1
   24      6       3    0.686   0.151        0.445            1
   36      6       0    0.686   0.151        0.445            1
   48      5       0    0.686   0.151        0.445            1
   60      5       0    0.686   0.151        0.445            1
  120      2       0    0.686   0.151        0.445            1

                FACILITY_LOCATION_F=South Atlantic 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      7       2    0.787   0.134        0.564            1
   24      6       1    0.675   0.155        0.430            1
   36      6       0    0.675   0.155        0.430            1
   48      6       0    0.675   0.155        0.430            1
   60      6       0    0.675   0.155        0.430            1
  120      3       0    0.675   0.155        0.430            1

                FACILITY_LOCATION_F=East North Central 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      5       2    0.714   0.171        0.447            1
   24      4       1    0.571   0.187        0.301            1
   36      4       0    0.571   0.187        0.301            1
   48      4       0    0.571   0.187        0.301            1
   60      4       0    0.571   0.187        0.301            1
  120      2       0    0.571   0.187        0.301            1

                FACILITY_LOCATION_F=East South Central 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      3       0        1       0            1            1
   24      2       0        1       0            1            1
   36      2       0        1       0            1            1
   48      2       0        1       0            1            1
   60      2       0        1       0            1            1
  120      1       0        1       0            1            1

                FACILITY_LOCATION_F=West North Central 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      5       0      1.0   0.000        1.000            1
   24      4       1      0.8   0.179        0.516            1
   36      4       0      0.8   0.179        0.516            1
   48      3       1      0.6   0.219        0.293            1
   60      3       0      0.6   0.219        0.293            1

                FACILITY_LOCATION_F=West South Central 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       1    0.667   0.272       0.2995            1
   24      1       1    0.333   0.272       0.0673            1
   36      1       0    0.333   0.272       0.0673            1
   48      1       0    0.333   0.272       0.0673            1
   60      1       0    0.333   0.272       0.0673            1
  120      1       0    0.333   0.272       0.0673            1

                FACILITY_LOCATION_F=Mountain 
        time       n.risk      n.event     survival      std.err lower 95% CI upper 95% CI 
          12            2            0            1            0            1            1 

                FACILITY_LOCATION_F=Pacific 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      4       0        1       0            1            1
   24      4       0        1       0            1            1
   36      4       0        1       0            1            1
   48      4       0        1       0            1            1
   60      4       0        1       0            1            1




   
## Univariable Cox Proportional Hazard Model for:  FACILITY_LOCATION_F
Loglik converged before variable  4,8 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_LOCATION_F, data = data)

  n= 54, number of events= 20 
   (33 observations deleted due to missingness)

                                            coef  exp(coef)   se(coef)      z Pr(>|z|)
FACILITY_LOCATION_FMiddle Atlantic    -7.740e-01  4.612e-01  7.649e-01 -1.012    0.312
FACILITY_LOCATION_FSouth Atlantic     -6.579e-01  5.179e-01  7.681e-01 -0.856    0.392
FACILITY_LOCATION_FEast North Central -3.185e-01  7.272e-01  7.656e-01 -0.416    0.677
FACILITY_LOCATION_FEast South Central -1.899e+01  5.641e-09  9.584e+03 -0.002    0.998
FACILITY_LOCATION_FWest North Central -1.839e-01  8.320e-01  7.661e-01 -0.240    0.810
FACILITY_LOCATION_FWest South Central  3.347e-01  1.398e+00  8.685e-01  0.385    0.700
FACILITY_LOCATION_FMountain            1.078e+00  2.940e+00  8.886e-01  1.214    0.225
FACILITY_LOCATION_FPacific            -1.897e+01  5.768e-09  7.359e+03 -0.003    0.998

                                      exp(coef) exp(-coef) lower .95 upper .95
FACILITY_LOCATION_FMiddle Atlantic    4.612e-01  2.168e+00    0.1030     2.065
FACILITY_LOCATION_FSouth Atlantic     5.179e-01  1.931e+00    0.1149     2.334
FACILITY_LOCATION_FEast North Central 7.272e-01  1.375e+00    0.1622     3.261
FACILITY_LOCATION_FEast South Central 5.641e-09  1.773e+08    0.0000       Inf
FACILITY_LOCATION_FWest North Central 8.320e-01  1.202e+00    0.1854     3.735
FACILITY_LOCATION_FWest South Central 1.398e+00  7.156e-01    0.2548     7.666
FACILITY_LOCATION_FMountain           2.940e+00  3.401e-01    0.5152    16.777
FACILITY_LOCATION_FPacific            5.768e-09  1.734e+08    0.0000       Inf

Concordance= 0.69  (se = 0.067 )
Rsquare= 0.196   (max possible= 0.933 )
Likelihood ratio test= 11.78  on 8 df,   p=0.1613
Wald test            = 5.37  on 8 df,   p=0.7171
Score (logrank) test = 11.23  on 8 df,   p=0.1891
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 9 rows containing missing values (geom_text).Removed 9 rows containing missing values (geom_text).Removed 9 rows containing missing values (geom_text).Removed 9 rows containing missing values (geom_text).Removed 9 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  FACILITY_LOCATION_F

Facility Geography

uni_var(test_var = "FACILITY_GEOGRAPHY", data_imp = data)
_________________________________________________
   
## FACILITY_GEOGRAPHY
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_GEOGRAPHY, data = data)

   33 observations deleted due to missingness 
                              n events median 0.95LCL 0.95UCL
FACILITY_GEOGRAPHY=Northeast 18      7     NA    23.7      NA
FACILITY_GEOGRAPHY=South     14      5     NA    12.0      NA
FACILITY_GEOGRAPHY=Midwest   16      6     NA    41.3      NA
FACILITY_GEOGRAPHY=West       6      2     NA    19.1      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_GEOGRAPHY, data = data)

33 observations deleted due to missingness 
                FACILITY_GEOGRAPHY=Northeast 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     16       1    0.944   0.054        0.844        1.000
   24     10       5    0.639   0.119        0.445        0.920
   36      9       1    0.576   0.123        0.379        0.874
   48      8       0    0.576   0.123        0.379        0.874
   60      7       0    0.576   0.123        0.379        0.874
  120      2       0    0.576   0.123        0.379        0.874

                FACILITY_GEOGRAPHY=South 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      9       3    0.766   0.119        0.565        1.000
   24      7       2    0.596   0.141        0.375        0.947
   36      7       0    0.596   0.141        0.375        0.947
   48      7       0    0.596   0.141        0.375        0.947
   60      7       0    0.596   0.141        0.375        0.947
  120      4       0    0.596   0.141        0.375        0.947

                FACILITY_GEOGRAPHY=Midwest 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     13       2    0.867  0.0878        0.711        1.000
   24     10       2    0.722  0.1185        0.524        0.996
   36     10       0    0.722  0.1185        0.524        0.996
   48      9       1    0.650  0.1268        0.444        0.953
   60      9       0    0.650  0.1268        0.444        0.953
  120      3       1    0.569  0.1345        0.358        0.904

                FACILITY_GEOGRAPHY=West 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      6       0    1.000   0.000        1.000            1
   24      4       2    0.667   0.192        0.379            1
   36      4       0    0.667   0.192        0.379            1
   48      4       0    0.667   0.192        0.379            1
   60      4       0    0.667   0.192        0.379            1




   
## Univariable Cox Proportional Hazard Model for:  FACILITY_GEOGRAPHY

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ FACILITY_GEOGRAPHY, data = data)

  n= 54, number of events= 20 
   (33 observations deleted due to missingness)

                              coef exp(coef) se(coef)      z Pr(>|z|)
FACILITY_GEOGRAPHYSouth    0.04767   1.04883  0.58834  0.081    0.935
FACILITY_GEOGRAPHYMidwest -0.05898   0.94272  0.55797 -0.106    0.916
FACILITY_GEOGRAPHYWest    -0.25357   0.77602  0.80203 -0.316    0.752

                          exp(coef) exp(-coef) lower .95 upper .95
FACILITY_GEOGRAPHYSouth      1.0488     0.9534    0.3311     3.323
FACILITY_GEOGRAPHYMidwest    0.9427     1.0608    0.3158     2.814
FACILITY_GEOGRAPHYWest       0.7760     1.2886    0.1611     3.737

Concordance= 0.537  (se = 0.065 )
Rsquare= 0.003   (max possible= 0.933 )
Likelihood ratio test= 0.15  on 3 df,   p=0.9855
Wald test            = 0.14  on 3 df,   p=0.9865
Score (logrank) test = 0.14  on 3 df,   p=0.9864
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  FACILITY_GEOGRAPHY

Age Group

uni_var(test_var = "AGE_F", data_imp = data)
_________________________________________________
   
## AGE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_F, data = data)

                n events median 0.95LCL 0.95UCL
AGE_F=(0,54]   57     11     NA      NA      NA
AGE_F=(54,64]  20      9     80   20.86      NA
AGE_F=(64,74]   3      1     NA    7.26      NA
AGE_F=(74,100]  7      2     NA   30.09      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_F, data = data)

                AGE_F=(0,54] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     48       2    0.963  0.0259        0.913        1.000
   24     40       7    0.819  0.0546        0.719        0.934
   36     38       0    0.819  0.0546        0.719        0.934
   48     35       1    0.796  0.0577        0.691        0.918
   60     34       0    0.796  0.0577        0.691        0.918
  120     10       1    0.771  0.0613        0.660        0.901

                AGE_F=(54,64] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     14       4    0.794  0.0919        0.633        0.996
   24      9       4    0.553  0.1195        0.362        0.845
   36      9       0    0.553  0.1195        0.362        0.845
   48      8       0    0.553  0.1195        0.362        0.845
   60      8       0    0.553  0.1195        0.362        0.845
  120      3       1    0.461  0.1304        0.265        0.802

                AGE_F=(64,74] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       1    0.667   0.272          0.3            1
   24      2       0    0.667   0.272          0.3            1
   36      2       0    0.667   0.272          0.3            1
   48      2       0    0.667   0.272          0.3            1
   60      2       0    0.667   0.272          0.3            1
  120      1       0    0.667   0.272          0.3            1

                AGE_F=(74,100] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      5       0      1.0   0.000        1.000            1
   24      4       1      0.8   0.179        0.516            1
   36      3       1      0.6   0.219        0.293            1
   48      3       0      0.6   0.219        0.293            1
   60      3       0      0.6   0.219        0.293            1




   
## Univariable Cox Proportional Hazard Model for:  AGE_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_F, data = data)

  n= 87, number of events= 23 

                coef exp(coef) se(coef)     z Pr(>|z|)  
AGE_F(54,64]  1.0825    2.9521   0.4500 2.405   0.0162 *
AGE_F(64,74]  0.5848    1.7946   1.0450 0.560   0.5758  
AGE_F(74,100] 0.6376    1.8919   0.7690 0.829   0.4070  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

              exp(coef) exp(-coef) lower .95 upper .95
AGE_F(54,64]      2.952     0.3387    1.2220     7.132
AGE_F(64,74]      1.795     0.5572    0.2314    13.916
AGE_F(74,100]     1.892     0.5286    0.4192     8.540

Concordance= 0.632  (se = 0.05 )
Rsquare= 0.062   (max possible= 0.888 )
Likelihood ratio test= 5.52  on 3 df,   p=0.1373
Wald test            = 5.84  on 3 df,   p=0.1199
Score (logrank) test = 6.37  on 3 df,   p=0.09509
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  AGE_F

Age Group

uni_var(test_var = "AGE_40", data_imp = data)
_________________________________________________
   
## AGE_40
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_40, data = data)

                 n events median 0.95LCL 0.95UCL
AGE_40=(0,40]   34      3     NA      NA      NA
AGE_40=(40,100] 53     20     NA    41.3      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_40, data = data)

                AGE_40=(0,40] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     26       1    0.968  0.0317        0.908            1
   24     25       1    0.931  0.0476        0.842            1
   36     23       0    0.931  0.0476        0.842            1
   48     21       0    0.931  0.0476        0.842            1
   60     21       0    0.931  0.0476        0.842            1
  120      5       1    0.884  0.0640        0.767            1

                AGE_40=(40,100] 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     43       6    0.881  0.0456        0.796        0.975
   24     30      11    0.649  0.0690        0.527        0.799
   36     29       1    0.627  0.0700        0.504        0.780
   48     27       1    0.606  0.0708        0.481        0.762
   60     26       0    0.606  0.0708        0.481        0.762
  120      9       1    0.575  0.0735        0.448        0.739




   
## Univariable Cox Proportional Hazard Model for:  AGE_40

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ AGE_40, data = data)

  n= 87, number of events= 23 

                 coef exp(coef) se(coef)     z Pr(>|z|)  
AGE_40(40,100] 1.5629    4.7725   0.6195 2.523   0.0116 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

               exp(coef) exp(-coef) lower .95 upper .95
AGE_40(40,100]     4.772     0.2095     1.417     16.07

Concordance= 0.649  (se = 0.053 )
Rsquare= 0.098   (max possible= 0.888 )
Likelihood ratio test= 9.01  on 1 df,   p=0.002687
Wald test            = 6.36  on 1 df,   p=0.01165
Score (logrank) test = 7.76  on 1 df,   p=0.005337
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  AGE_40

Gender

uni_var(test_var = "SEX_F", data_imp = data)
_________________________________________________
   
## SEX_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SEX_F, data = data)

              n events median 0.95LCL 0.95UCL
SEX_F=Male   33     11     NA    67.1      NA
SEX_F=Female 54     12     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SEX_F, data = data)

                SEX_F=Male 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     23       4    0.869  0.0615        0.756        0.998
   24     18       5    0.680  0.0889        0.526        0.878
   36     17       0    0.680  0.0889        0.526        0.878
   48     17       0    0.680  0.0889        0.526        0.878
   60     17       0    0.680  0.0889        0.526        0.878
  120      2       2    0.588  0.0979        0.425        0.815

                SEX_F=Female 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     46       3    0.941  0.0329        0.879        1.000
   24     37       7    0.794  0.0582        0.688        0.917
   36     35       1    0.772  0.0606        0.662        0.900
   48     31       1    0.749  0.0631        0.635        0.883
   60     30       0    0.749  0.0631        0.635        0.883
  120     12       0    0.749  0.0631        0.635        0.883




   
## Univariable Cox Proportional Hazard Model for:  SEX_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SEX_F, data = data)

  n= 87, number of events= 23 

               coef exp(coef) se(coef)      z Pr(>|z|)
SEX_FFemale -0.5634    0.5693   0.4178 -1.349    0.177

            exp(coef) exp(-coef) lower .95 upper .95
SEX_FFemale    0.5693      1.757     0.251     1.291

Concordance= 0.569  (se = 0.051 )
Rsquare= 0.02   (max possible= 0.888 )
Likelihood ratio test= 1.78  on 1 df,   p=0.182
Wald test            = 1.82  on 1 df,   p=0.1775
Score (logrank) test = 1.87  on 1 df,   p=0.1718
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  SEX_F

RACE_F

uni_var(test_var = "RACE_F", data_imp = data)
_________________________________________________
   
## RACE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RACE_F, data = data)

                  n events median 0.95LCL 0.95UCL
RACE_F=White     50     18     NA    41.3      NA
RACE_F=Black     27      4     NA      NA      NA
RACE_F=Other/Unk  2      0     NA      NA      NA
RACE_F=Asian      8      1     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RACE_F, data = data)

                RACE_F=White 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     39       5    0.893  0.0454        0.808        0.986
   24     28      10    0.659  0.0719        0.532        0.816
   36     26       1    0.634  0.0732        0.506        0.795
   48     24       1    0.610  0.0744        0.480        0.775
   60     24       0    0.610  0.0744        0.480        0.775
  120      7       1    0.574  0.0782        0.440        0.750

                RACE_F=Black 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     21       2    0.923  0.0525        0.825        1.000
   24     18       2    0.833  0.0770        0.695        0.998
   36     18       0    0.833  0.0770        0.695        0.998
   48     17       0    0.833  0.0770        0.695        0.998
   60     16       0    0.833  0.0770        0.695        0.998
  120      6       0    0.833  0.0770        0.695        0.998

                RACE_F=Other/Unk 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0        1       0            1            1
   24      2       0        1       0            1            1
   36      2       0        1       0            1            1
   48      2       0        1       0            1            1
   60      2       0        1       0            1            1
  120      1       0        1       0            1            1

                RACE_F=Asian 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      7       0        1       0            1            1
   24      7       0        1       0            1            1
   36      6       0        1       0            1            1
   48      5       0        1       0            1            1
   60      5       0        1       0            1            1




   
## Univariable Cox Proportional Hazard Model for:  RACE_F
Loglik converged before variable  2 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RACE_F, data = data)

  n= 87, number of events= 23 

                      coef  exp(coef)   se(coef)      z Pr(>|z|)  
RACE_FBlack     -9.797e-01  3.754e-01  5.534e-01 -1.770   0.0767 .
RACE_FOther/Unk -1.750e+01  2.514e-08  6.061e+03 -0.003   0.9977  
RACE_FAsian     -1.277e+00  2.789e-01  1.028e+00 -1.242   0.2141  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                exp(coef) exp(-coef) lower .95 upper .95
RACE_FBlack     3.754e-01  2.664e+00   0.12689     1.111
RACE_FOther/Unk 2.514e-08  3.978e+07   0.00000       Inf
RACE_FAsian     2.789e-01  3.585e+00   0.03722     2.091

Concordance= 0.625  (se = 0.056 )
Rsquare= 0.073   (max possible= 0.888 )
Likelihood ratio test= 6.64  on 3 df,   p=0.08426
Wald test            = 4.29  on 3 df,   p=0.232
Score (logrank) test = 5.64  on 3 df,   p=0.1305
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  RACE_F

Hispanic

uni_var(test_var = "HISPANIC", data_imp = data)
_________________________________________________
   
## HISPANIC
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ HISPANIC, data = data)

                  n events median 0.95LCL 0.95UCL
HISPANIC=No      78     21     NA      NA      NA
HISPANIC=Yes      6      0     NA      NA      NA
HISPANIC=Unknown  3      2   17.3    7.26      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ HISPANIC, data = data)

                HISPANIC=No 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     62       6    0.918  0.0320        0.858        0.983
   24     49      11    0.752  0.0525        0.656        0.862
   36     47       1    0.736  0.0537        0.638        0.849
   48     43       1    0.720  0.0549        0.620        0.836
   60     42       0    0.720  0.0549        0.620        0.836
  120     13       2    0.680  0.0587        0.574        0.805

                HISPANIC=Yes 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      5       0        1       0            1            1
   24      5       0        1       0            1            1
   36      4       0        1       0            1            1
   48      4       0        1       0            1            1
   60      4       0        1       0            1            1

                HISPANIC=Unknown 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       1    0.667   0.272       0.2995            1
   24      1       1    0.333   0.272       0.0673            1
   36      1       0    0.333   0.272       0.0673            1
   48      1       0    0.333   0.272       0.0673            1
   60      1       0    0.333   0.272       0.0673            1
  120      1       0    0.333   0.272       0.0673            1




   
## Univariable Cox Proportional Hazard Model for:  HISPANIC
Loglik converged before variable  1 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ HISPANIC, data = data)

  n= 87, number of events= 23 

                      coef  exp(coef)   se(coef)      z Pr(>|z|)
HISPANICYes     -1.826e+01  1.172e-08  6.805e+03 -0.003    0.998
HISPANICUnknown  1.175e+00  3.238e+00  7.430e-01  1.581    0.114

                exp(coef) exp(-coef) lower .95 upper .95
HISPANICYes     1.172e-08  8.535e+07    0.0000       Inf
HISPANICUnknown 3.238e+00  3.088e-01    0.7548     13.89

Concordance= 0.57  (se = 0.033 )
Rsquare= 0.062   (max possible= 0.888 )
Likelihood ratio test= 5.6  on 2 df,   p=0.06078
Wald test            = 2.5  on 2 df,   p=0.2864
Score (logrank) test = 5  on 2 df,   p=0.08229
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 3 rows containing missing values (geom_text).Removed 3 rows containing missing values (geom_text).Removed 3 rows containing missing values (geom_text).Removed 3 rows containing missing values (geom_text).Removed 3 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  HISPANIC

Insurance Status

uni_var(test_var = "INSURANCE_F", data_imp = data)
_________________________________________________
   
## INSURANCE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ INSURANCE_F, data = data)

                              n events median 0.95LCL 0.95UCL
INSURANCE_F=Private          52     14     NA      NA      NA
INSURANCE_F=None              2      1   21.1    21.1      NA
INSURANCE_F=Medicaid         11      2     NA      NA      NA
INSURANCE_F=Medicare         19      5     NA    30.1      NA
INSURANCE_F=Other Government  1      0     NA      NA      NA
INSURANCE_F=Unknown           2      1   41.3    41.3      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ INSURANCE_F, data = data)

                INSURANCE_F=Private 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     42       5    0.900  0.0424        0.821        0.987
   24     33       8    0.725  0.0653        0.608        0.865
   36     32       0    0.725  0.0653        0.608        0.865
   48     29       0    0.725  0.0653        0.608        0.865
   60     29       0    0.725  0.0653        0.608        0.865
  120     10       1    0.693  0.0696        0.570        0.844

                INSURANCE_F=None 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0      1.0   0.000        1.000            1
   24      1       1      0.5   0.354        0.125            1
   36      1       0      0.5   0.354        0.125            1
   48      1       0      0.5   0.354        0.125            1
   60      1       0      0.5   0.354        0.125            1

                INSURANCE_F=Medicaid 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      8       1    0.909  0.0867        0.754            1
   24      8       0    0.909  0.0867        0.754            1
   36      7       0    0.909  0.0867        0.754            1
   48      7       0    0.909  0.0867        0.754            1
   60      7       0    0.909  0.0867        0.754            1
  120      2       1    0.779  0.1413        0.546            1

                INSURANCE_F=Medicare 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     15       1    0.938  0.0605        0.826        1.000
   24     11       3    0.740  0.1121        0.550        0.996
   36     10       1    0.673  0.1204        0.474        0.956
   48     10       0    0.673  0.1204        0.474        0.956
   60      9       0    0.673  0.1204        0.474        0.956
  120      1       0    0.673  0.1204        0.474        0.956

                INSURANCE_F=Other Government 
     time n.risk n.event survival std.err lower 95% CI upper 95% CI

                INSURANCE_F=Unknown 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0      1.0   0.000        1.000            1
   24      2       0      1.0   0.000        1.000            1
   36      2       0      1.0   0.000        1.000            1
   48      1       1      0.5   0.354        0.125            1
   60      1       0      0.5   0.354        0.125            1
  120      1       0      0.5   0.354        0.125            1




   
## Univariable Cox Proportional Hazard Model for:  INSURANCE_F
Loglik converged before variable  4 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ INSURANCE_F, data = data)

  n= 87, number of events= 23 

                                  coef  exp(coef)   se(coef)      z Pr(>|z|)
INSURANCE_FNone              4.964e-01  1.643e+00  1.036e+00  0.479    0.632
INSURANCE_FMedicaid         -4.373e-01  6.458e-01  7.561e-01 -0.578    0.563
INSURANCE_FMedicare          3.281e-02  1.033e+00  5.212e-01  0.063    0.950
INSURANCE_FOther Government -1.505e+01  2.905e-07  6.158e+03 -0.002    0.998
INSURANCE_FUnknown           3.543e-01  1.425e+00  1.036e+00  0.342    0.732

                            exp(coef) exp(-coef) lower .95 upper .95
INSURANCE_FNone             1.643e+00  6.087e-01    0.2157    12.514
INSURANCE_FMedicaid         6.458e-01  1.549e+00    0.1467     2.842
INSURANCE_FMedicare         1.033e+00  9.677e-01    0.3720     2.870
INSURANCE_FOther Government 2.905e-07  3.443e+06    0.0000       Inf
INSURANCE_FUnknown          1.425e+00  7.016e-01    0.1872    10.850

Concordance= 0.531  (se = 0.055 )
Rsquare= 0.011   (max possible= 0.888 )
Likelihood ratio test= 0.95  on 5 df,   p=0.9667
Wald test            = 0.76  on 5 df,   p=0.9796
Score (logrank) test = 0.87  on 5 df,   p=0.9724
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  INSURANCE_F

Overall Survival pre/post-ACA expansion

uni_var(test_var = "EXPN_GROUP", data_imp = no_Excludes)
_________________________________________________
   
## EXPN_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ EXPN_GROUP, data = no_Excludes)

                             n events median 0.95LCL 0.95UCL
EXPN_GROUP=Post-Expansion  248     36     NA    82.8      NA
EXPN_GROUP=Pre-Expansion  1137    303    142   128.2      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ EXPN_GROUP, data = no_Excludes)

                EXPN_GROUP=Post-Expansion 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12    206       8    0.965  0.0121        0.942        0.989
   24    144      16    0.882  0.0229        0.838        0.928
   36     79       6    0.838  0.0280        0.785        0.894
   48     52       3    0.797  0.0351        0.731        0.869
   60     33       1    0.780  0.0384        0.708        0.859

                EXPN_GROUP=Pre-Expansion 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12   1000      41    0.962 0.00580        0.951        0.974
   24    900      41    0.921 0.00835        0.905        0.938
   36    799      34    0.885 0.01009        0.865        0.905
   48    683      33    0.846 0.01167        0.824        0.870
   60    568      44    0.789 0.01376        0.762        0.816
  120    125      94    0.586 0.02213        0.545        0.631




   
## Univariable Cox Proportional Hazard Model for:  EXPN_GROUP

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ EXPN_GROUP, data = no_Excludes)

  n= 1385, number of events= 339 

                           coef exp(coef) se(coef)      z Pr(>|z|)
EXPN_GROUPPre-Expansion -0.2137    0.8076   0.1815 -1.178    0.239

                        exp(coef) exp(-coef) lower .95 upper .95
EXPN_GROUPPre-Expansion    0.8076      1.238    0.5659     1.153

Concordance= 0.514  (se = 0.01 )
Rsquare= 0.001   (max possible= 0.958 )
Likelihood ratio test= 1.32  on 1 df,   p=0.2507
Wald test            = 1.39  on 1 df,   p=0.239
Score (logrank) test = 1.39  on 1 df,   p=0.2381





   
## Unadjusted Kaplan Meier Overall Survival Curve for:  EXPN_GROUP

Education

uni_var(test_var = "EDUCATION_F", data_imp = data)
_________________________________________________
   
## EDUCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ EDUCATION_F, data = data)

                          n events median 0.95LCL 0.95UCL
EDUCATION_F=21% or more  14      3     NA      NA      NA
EDUCATION_F=13 - 20.9%   27      8     NA      NA      NA
EDUCATION_F=7 - 12.9%    22      2     NA      NA      NA
EDUCATION_F=Less than 7% 24     10     NA    41.3      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ EDUCATION_F, data = data)

                EDUCATION_F=21% or more 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       1    0.923  0.0739        0.789            1
   24      7       2    0.738  0.1309        0.522            1
   36      7       0    0.738  0.1309        0.522            1
   48      7       0    0.738  0.1309        0.522            1
   60      7       0    0.738  0.1309        0.522            1
  120      1       0    0.738  0.1309        0.522            1

                EDUCATION_F=13 - 20.9% 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     19       5    0.813  0.0754        0.678        0.975
   24     15       3    0.678  0.0951        0.515        0.892
   36     14       0    0.678  0.0951        0.515        0.892
   48     14       0    0.678  0.0951        0.515        0.892
   60     13       0    0.678  0.0951        0.515        0.892
  120      4       0    0.678  0.0951        0.515        0.892

                EDUCATION_F=7 - 12.9% 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     17       1    0.955  0.0444        0.871            1
   24     16       1    0.898  0.0687        0.773            1
   36     15       0    0.898  0.0687        0.773            1
   48     13       0    0.898  0.0687        0.773            1
   60     13       0    0.898  0.0687        0.773            1
  120      5       0    0.898  0.0687        0.773            1

                EDUCATION_F=Less than 7% 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     23       0    1.000  0.0000        1.000        1.000
   24     17       6    0.739  0.0916        0.580        0.942
   36     16       1    0.696  0.0959        0.531        0.912
   48     14       1    0.649  0.1001        0.480        0.878
   60     14       0    0.649  0.1001        0.480        0.878
  120      4       2    0.543  0.1090        0.366        0.805




   
## Univariable Cox Proportional Hazard Model for:  EDUCATION_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ EDUCATION_F, data = data)

  n= 87, number of events= 23 

                           coef exp(coef) se(coef)      z Pr(>|z|)
EDUCATION_F13 - 20.9%    0.1892    1.2083   0.6772  0.279    0.780
EDUCATION_F7 - 12.9%    -1.0498    0.3500   0.9133 -1.149    0.250
EDUCATION_FLess than 7%  0.3655    1.4413   0.6588  0.555    0.579

                        exp(coef) exp(-coef) lower .95 upper .95
EDUCATION_F13 - 20.9%       1.208     0.8276   0.32042     4.557
EDUCATION_F7 - 12.9%        0.350     2.8570   0.05844     2.097
EDUCATION_FLess than 7%     1.441     0.6938   0.39624     5.243

Concordance= 0.58  (se = 0.06 )
Rsquare= 0.052   (max possible= 0.888 )
Likelihood ratio test= 4.66  on 3 df,   p=0.1987
Wald test            = 3.41  on 3 df,   p=0.332
Score (logrank) test = 3.9  on 3 df,   p=0.2726
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  EDUCATION_F

Urban/Rural

uni_var(test_var = "U_R_F", data_imp = data)
_________________________________________________
   
## U_R_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ U_R_F, data = data)

   3 observations deleted due to missingness 
             n events median 0.95LCL 0.95UCL
U_R_F=Metro 73     20     NA      NA      NA
U_R_F=Urban 11      3     NA    21.7      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ U_R_F, data = data)

3 observations deleted due to missingness 
                U_R_F=Metro 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     58       7    0.900  0.0360        0.832        0.973
   24     47       9    0.757  0.0532        0.659        0.868
   36     44       1    0.740  0.0546        0.640        0.855
   48     40       1    0.722  0.0561        0.620        0.841
   60     40       0    0.722  0.0561        0.620        0.841
  120     10       2    0.679  0.0606        0.570        0.809

                U_R_F=Urban 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      9       0    1.000   0.000         1.00            1
   24      6       3    0.667   0.157         0.42            1
   36      6       0    0.667   0.157         0.42            1
   48      6       0    0.667   0.157         0.42            1
   60      6       0    0.667   0.157         0.42            1
  120      3       0    0.667   0.157         0.42            1




   
## Univariable Cox Proportional Hazard Model for:  U_R_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ U_R_F, data = data)

  n= 84, number of events= 23 
   (3 observations deleted due to missingness)

               coef exp(coef) se(coef)     z Pr(>|z|)
U_R_FUrban 0.006976  1.007000 0.619430 0.011    0.991

           exp(coef) exp(-coef) lower .95 upper .95
U_R_FUrban     1.007      0.993    0.2991     3.391

Concordance= 0.499  (se = 0.036 )
Rsquare= 0   (max possible= 0.895 )
Likelihood ratio test= 0  on 1 df,   p=0.991
Wald test            = 0  on 1 df,   p=0.991
Score (logrank) test = 0  on 1 df,   p=0.991
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  U_R_F

Class (treatment at performing facility)

uni_var(test_var = "CLASS_OF_CASE_F", data_imp = data)
_________________________________________________
   
## CLASS_OF_CASE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CLASS_OF_CASE_F, data = data)

                                n events median 0.95LCL 0.95UCL
CLASS_OF_CASE_F=Other_Facility  5      2   20.9    17.3      NA
CLASS_OF_CASE_F=All_Part_Prim  82     21     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CLASS_OF_CASE_F, data = data)

                CLASS_OF_CASE_F=Other_Facility 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      3       0    1.000   0.000       1.0000            1
   24      1       2    0.333   0.272       0.0673            1
   36      1       0    0.333   0.272       0.0673            1
   48      1       0    0.333   0.272       0.0673            1
   60      1       0    0.333   0.272       0.0673            1

                CLASS_OF_CASE_F=All_Part_Prim 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     66       7    0.911  0.0321        0.850        0.976
   24     54      10    0.770  0.0491        0.680        0.873
   36     51       1    0.756  0.0504        0.663        0.861
   48     47       1    0.740  0.0516        0.646        0.849
   60     46       0    0.740  0.0516        0.646        0.849
  120     14       2    0.703  0.0553        0.603        0.821




   
## Univariable Cox Proportional Hazard Model for:  CLASS_OF_CASE_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CLASS_OF_CASE_F, data = data)

  n= 87, number of events= 23 

                                coef exp(coef) se(coef)      z Pr(>|z|)
CLASS_OF_CASE_FAll_Part_Prim -1.0777    0.3404   0.7476 -1.442    0.149

                             exp(coef) exp(-coef) lower .95 upper .95
CLASS_OF_CASE_FAll_Part_Prim    0.3404      2.938   0.07863     1.473

Concordance= 0.525  (se = 0.02 )
Rsquare= 0.018   (max possible= 0.888 )
Likelihood ratio test= 1.58  on 1 df,   p=0.2094
Wald test            = 2.08  on 1 df,   p=0.1494
Score (logrank) test = 2.29  on 1 df,   p=0.1305
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  CLASS_OF_CASE_F

Year

uni_var(test_var = "YEAR_OF_DIAGNOSIS", data_imp = data)
_________________________________________________
   
## YEAR_OF_DIAGNOSIS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ YEAR_OF_DIAGNOSIS, data = data)

                        n events median 0.95LCL 0.95UCL
YEAR_OF_DIAGNOSIS=2004  9      4     NA    20.9      NA
YEAR_OF_DIAGNOSIS=2005 12      6   30.1    18.1      NA
YEAR_OF_DIAGNOSIS=2006  8      0     NA      NA      NA
YEAR_OF_DIAGNOSIS=2007 11      5     NA    17.3      NA
YEAR_OF_DIAGNOSIS=2008 15      2     NA      NA      NA
YEAR_OF_DIAGNOSIS=2009  8      4   67.1    21.4      NA
YEAR_OF_DIAGNOSIS=2010  9      0     NA      NA      NA
YEAR_OF_DIAGNOSIS=2011  6      1     NA      NA      NA
YEAR_OF_DIAGNOSIS=2013  1      0     NA      NA      NA
YEAR_OF_DIAGNOSIS=2015  8      1   23.7      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ YEAR_OF_DIAGNOSIS, data = data)

                YEAR_OF_DIAGNOSIS=2004 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      8       1    0.889   0.105        0.706        1.000
   24      6       2    0.667   0.157        0.420        1.000
   36      6       0    0.667   0.157        0.420        1.000
   48      5       1    0.556   0.166        0.310        0.997
   60      5       0    0.556   0.166        0.310        0.997
  120      5       0    0.556   0.166        0.310        0.997

                YEAR_OF_DIAGNOSIS=2005 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       2    0.833   0.108        0.647        1.000
   24      7       3    0.583   0.142        0.362        0.941
   36      6       1    0.500   0.144        0.284        0.880
   48      6       0    0.500   0.144        0.284        0.880
   60      6       0    0.500   0.144        0.284        0.880
  120      3       0    0.500   0.144        0.284        0.880

                YEAR_OF_DIAGNOSIS=2006 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      8       0        1       0            1            1
   24      8       0        1       0            1            1
   36      7       0        1       0            1            1
   48      7       0        1       0            1            1
   60      7       0        1       0            1            1
  120      5       0        1       0            1            1

                YEAR_OF_DIAGNOSIS=2007 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       1    0.909  0.0867        0.754        1.000
   24      7       3    0.636  0.1450        0.407        0.995
   36      7       0    0.636  0.1450        0.407        0.995
   48      7       0    0.636  0.1450        0.407        0.995
   60      7       0    0.636  0.1450        0.407        0.995
  120      1       1    0.530  0.1549        0.299        0.940

                YEAR_OF_DIAGNOSIS=2008 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     13       1    0.933  0.0644        0.815            1
   24     11       1    0.862  0.0911        0.700            1
   36     11       0    0.862  0.0911        0.700            1
   48     11       0    0.862  0.0911        0.700            1
   60     10       0    0.862  0.0911        0.700            1

                YEAR_OF_DIAGNOSIS=2009 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      7       1    0.875   0.117        0.673            1
   24      5       2    0.625   0.171        0.365            1
   36      4       0    0.625   0.171        0.365            1
   48      3       0    0.625   0.171        0.365            1
   60      3       0    0.625   0.171        0.365            1

                YEAR_OF_DIAGNOSIS=2010 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      6       0        1       0            1            1
   24      6       0        1       0            1            1
   36      6       0        1       0            1            1
   48      5       0        1       0            1            1
   60      5       0        1       0            1            1

                YEAR_OF_DIAGNOSIS=2011 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      4       1      0.8   0.179        0.516            1
   24      4       0      0.8   0.179        0.516            1
   36      4       0      0.8   0.179        0.516            1
   48      4       0      0.8   0.179        0.516            1
   60      4       0      0.8   0.179        0.516            1

                YEAR_OF_DIAGNOSIS=2013 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1

                YEAR_OF_DIAGNOSIS=2015 
        time       n.risk      n.event     survival      std.err lower 95% CI upper 95% CI 
          12            2            0            1            0            1            1 




   
## Univariable Cox Proportional Hazard Model for:  YEAR_OF_DIAGNOSIS
Loglik converged before variable  2,6,8 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ YEAR_OF_DIAGNOSIS, data = data)

  n= 87, number of events= 23 

                            coef  exp(coef)   se(coef)      z Pr(>|z|)
YEAR_OF_DIAGNOSIS2005  2.499e-01  1.284e+00  6.458e-01  0.387    0.699
YEAR_OF_DIAGNOSIS2006 -1.971e+01  2.744e-09  9.228e+03 -0.002    0.998
YEAR_OF_DIAGNOSIS2007  6.895e-02  1.071e+00  6.712e-01  0.103    0.918
YEAR_OF_DIAGNOSIS2008 -1.192e+00  3.037e-01  8.664e-01 -1.376    0.169
YEAR_OF_DIAGNOSIS2009  2.085e-01  1.232e+00  7.085e-01  0.294    0.769
YEAR_OF_DIAGNOSIS2010 -1.971e+01  2.748e-09  1.046e+04 -0.002    0.998
YEAR_OF_DIAGNOSIS2011 -7.466e-01  4.740e-01  1.120e+00 -0.666    0.505
YEAR_OF_DIAGNOSIS2013 -1.971e+01  2.763e-09  2.737e+04 -0.001    0.999
YEAR_OF_DIAGNOSIS2015 -2.027e-01  8.165e-01  1.132e+00 -0.179    0.858

                      exp(coef) exp(-coef) lower .95 upper .95
YEAR_OF_DIAGNOSIS2005 1.284e+00  7.789e-01   0.36213     4.552
YEAR_OF_DIAGNOSIS2006 2.744e-09  3.645e+08   0.00000       Inf
YEAR_OF_DIAGNOSIS2007 1.071e+00  9.334e-01   0.28747     3.993
YEAR_OF_DIAGNOSIS2008 3.037e-01  3.293e+00   0.05559     1.659
YEAR_OF_DIAGNOSIS2009 1.232e+00  8.118e-01   0.30724     4.939
YEAR_OF_DIAGNOSIS2010 2.748e-09  3.638e+08   0.00000       Inf
YEAR_OF_DIAGNOSIS2011 4.740e-01  2.110e+00   0.05275     4.259
YEAR_OF_DIAGNOSIS2013 2.763e-09  3.620e+08   0.00000       Inf
YEAR_OF_DIAGNOSIS2015 8.165e-01  1.225e+00   0.08877     7.511

Concordance= 0.704  (se = 0.062 )
Rsquare= 0.181   (max possible= 0.888 )
Likelihood ratio test= 17.42  on 9 df,   p=0.04259
Wald test            = 3.99  on 9 df,   p=0.9123
Score (logrank) test = 12.89  on 9 df,   p=0.1676
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 10 rows containing missing values (geom_text).Removed 10 rows containing missing values (geom_text).Removed 10 rows containing missing values (geom_text).Removed 10 rows containing missing values (geom_text).Removed 10 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  YEAR_OF_DIAGNOSIS

Primary Site

uni_var(test_var = "SITE_TEXT", data_imp = data)
_________________________________________________
   
## SITE_TEXT
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SITE_TEXT, data = data)

                                                           n events median 0.95LCL 0.95UCL
SITE_TEXT=C44.3 Skin of ear and unspecified parts of face  5      0     NA      NA      NA
SITE_TEXT=C44.5 Skin of trunk                             12      3     NA    80.0      NA
SITE_TEXT=C44.6 Skin of upper limb and shoulder            8      0     NA      NA      NA
SITE_TEXT=C44.7 Skin of lower limb and hip                17      3     NA      NA      NA
SITE_TEXT=C44.8 Overlapping lesion of skin                 6      2     NA    19.1      NA
SITE_TEXT=C44.9 Skin, NOS                                 39     15     NA    23.7      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SITE_TEXT, data = data)

                SITE_TEXT=C44.3 Skin of ear and unspecified parts of face 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      4       0        1       0            1            1
   24      4       0        1       0            1            1
   36      3       0        1       0            1            1
   48      3       0        1       0            1            1
   60      3       0        1       0            1            1

                SITE_TEXT=C44.5 Skin of trunk 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     11       1    0.917  0.0798        0.773            1
   24     11       0    0.917  0.0798        0.773            1
   36     11       0    0.917  0.0798        0.773            1
   48     10       0    0.917  0.0798        0.773            1
   60     10       0    0.917  0.0798        0.773            1
  120      1       2    0.722  0.1380        0.496            1

                SITE_TEXT=C44.6 Skin of upper limb and shoulder 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      6       0        1       0            1            1
   24      6       0        1       0            1            1
   36      6       0        1       0            1            1
   48      6       0        1       0            1            1
   60      6       0        1       0            1            1
  120      2       0        1       0            1            1

                SITE_TEXT=C44.7 Skin of lower limb and hip 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     13       0    1.000   0.000        1.000            1
   24     10       2    0.839   0.104        0.657            1
   36      9       1    0.755   0.123        0.549            1
   48      8       0    0.755   0.123        0.549            1
   60      8       0    0.755   0.123        0.549            1
  120      3       0    0.755   0.123        0.549            1

                SITE_TEXT=C44.8 Overlapping lesion of skin 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      4       1    0.800   0.179        0.516            1
   24      2       1    0.533   0.248        0.214            1
   36      2       0    0.533   0.248        0.214            1
   48      2       0    0.533   0.248        0.214            1
   60      2       0    0.533   0.248        0.214            1
  120      1       0    0.533   0.248        0.214            1

                SITE_TEXT=C44.9 Skin, NOS 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     31       5    0.867  0.0553        0.765        0.983
   24     22       9    0.616  0.0809        0.476        0.796
   36     21       0    0.616  0.0809        0.476        0.796
   48     19       1    0.585  0.0825        0.444        0.771
   60     18       0    0.585  0.0825        0.444        0.771
  120      7       0    0.585  0.0825        0.444        0.771




   
## Univariable Cox Proportional Hazard Model for:  SITE_TEXT
Loglik converged before variable  1,2,3,4,5 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SITE_TEXT, data = data)

  n= 87, number of events= 23 

                                                     coef  exp(coef)   se(coef)     z Pr(>|z|)
SITE_TEXTC44.5 Skin of trunk                    1.789e+01  5.858e+07  7.338e+03 0.002    0.998
SITE_TEXTC44.6 Skin of upper limb and shoulder -2.239e-03  9.978e-01  9.410e+03 0.000    1.000
SITE_TEXTC44.7 Skin of lower limb and hip       1.784e+01  5.617e+07  7.338e+03 0.002    0.998
SITE_TEXTC44.8 Overlapping lesion of skin       1.876e+01  1.402e+08  7.338e+03 0.003    0.998
SITE_TEXTC44.9 Skin, NOS                        1.859e+01  1.186e+08  7.338e+03 0.003    0.998

                                               exp(coef) exp(-coef) lower .95 upper .95
SITE_TEXTC44.5 Skin of trunk                   5.858e+07  1.707e-08         0       Inf
SITE_TEXTC44.6 Skin of upper limb and shoulder 9.978e-01  1.002e+00         0       Inf
SITE_TEXTC44.7 Skin of lower limb and hip      5.617e+07  1.780e-08         0       Inf
SITE_TEXTC44.8 Overlapping lesion of skin      1.402e+08  7.133e-09         0       Inf
SITE_TEXTC44.9 Skin, NOS                       1.186e+08  8.433e-09         0       Inf

Concordance= 0.665  (se = 0.059 )
Rsquare= 0.118   (max possible= 0.888 )
Likelihood ratio test= 10.88  on 5 df,   p=0.05386
Wald test            = 2.51  on 5 df,   p=0.775
Score (logrank) test = 7.57  on 5 df,   p=0.1814
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  SITE_TEXT

Histology

#uni_var(test_var = "HISTOLOGY_F_LIM", data_imp = data)

Grade

#uni_var(test_var = "GRADE_F", data_imp = data)

Clinical T Stage

uni_var(test_var = "TNM_CLIN_T", data_imp = data)
_________________________________________________
   
## TNM_CLIN_T
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_T, data = data)

   1 observation deleted due to missingness 
      n  events  median 0.95LCL 0.95UCL 
     86      23      NA      NA      NA 

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_T, data = data)

1 observation deleted due to missingness 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     68       7    0.914  0.0312        0.855        0.977
   24     54      12    0.749  0.0501        0.657        0.854
   36     51       1    0.735  0.0511        0.641        0.842
   48     47       1    0.720  0.0522        0.624        0.830
   60     46       0    0.720  0.0522        0.624        0.830
  120     14       2    0.683  0.0557        0.582        0.802



   
## Univariable Cox Proportional Hazard Model for:  TNM_CLIN_T

[1] "Only one level, no Cox model performed"




   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_CLIN_T

Clinical N Stage

uni_var(test_var = "TNM_CLIN_N", data_imp = data)
_________________________________________________
   
## TNM_CLIN_N
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_N, data = data)

   1 observation deleted due to missingness 
      n  events  median 0.95LCL 0.95UCL 
     86      23      NA      NA      NA 

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_N, data = data)

1 observation deleted due to missingness 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     68       7    0.914  0.0312        0.855        0.977
   24     54      12    0.749  0.0501        0.657        0.854
   36     51       1    0.735  0.0511        0.641        0.842
   48     47       1    0.720  0.0522        0.624        0.830
   60     46       0    0.720  0.0522        0.624        0.830
  120     14       2    0.683  0.0557        0.582        0.802



   
## Univariable Cox Proportional Hazard Model for:  TNM_CLIN_N

[1] "Only one level, no Cox model performed"




   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_CLIN_N

Clinical Stage Group

uni_var(test_var = "TNM_CLIN_STAGE_GROUP", data_imp = data)
_________________________________________________
   
## TNM_CLIN_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_STAGE_GROUP, data = data)

                         n events median 0.95LCL 0.95UCL
TNM_CLIN_STAGE_GROUP=1  12      2     NA   30.09      NA
TNM_CLIN_STAGE_GROUP=1A 14      1     NA      NA      NA
TNM_CLIN_STAGE_GROUP=1B  3      2   21.7    6.77      NA
TNM_CLIN_STAGE_GROUP=2   7      2     NA   12.02      NA
TNM_CLIN_STAGE_GROUP=2A  5      1     NA   21.45      NA
TNM_CLIN_STAGE_GROUP=3   3      1     NA    7.95      NA
TNM_CLIN_STAGE_GROUP=3A  1      0     NA      NA      NA
TNM_CLIN_STAGE_GROUP=3B  2      1   67.1   67.06      NA
TNM_CLIN_STAGE_GROUP=4  12      3     NA      NA      NA
TNM_CLIN_STAGE_GROUP=4A  7      2     NA   80.00      NA
TNM_CLIN_STAGE_GROUP=4B  9      4   23.7   15.38      NA
TNM_CLIN_STAGE_GROUP=99 12      4     NA   20.86      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_STAGE_GROUP, data = data)

                TNM_CLIN_STAGE_GROUP=1 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      9       0    1.000   0.000        1.000            1
   24      8       1    0.889   0.105        0.706            1
   36      5       1    0.741   0.161        0.484            1
   48      4       0    0.741   0.161        0.484            1
   60      4       0    0.741   0.161        0.484            1
  120      1       0    0.741   0.161        0.484            1

                TNM_CLIN_STAGE_GROUP=1A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     14       0    1.000  0.0000        1.000            1
   24     14       0    1.000  0.0000        1.000            1
   36     14       0    1.000  0.0000        1.000            1
   48     11       1    0.923  0.0739        0.789            1
   60     10       0    0.923  0.0739        0.789            1
  120      3       0    0.923  0.0739        0.789            1

                TNM_CLIN_STAGE_GROUP=1B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       1    0.667   0.272       0.2995            1
   24      1       1    0.333   0.272       0.0673            1
   36      1       0    0.333   0.272       0.0673            1
   48      1       0    0.333   0.272       0.0673            1
   60      1       0    0.333   0.272       0.0673            1

                TNM_CLIN_STAGE_GROUP=2 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      5       1    0.833   0.152        0.583            1
   24      4       1    0.667   0.192        0.379            1
   36      4       0    0.667   0.192        0.379            1
   48      4       0    0.667   0.192        0.379            1
   60      4       0    0.667   0.192        0.379            1
  120      1       0    0.667   0.192        0.379            1

                TNM_CLIN_STAGE_GROUP=2A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      4       0    1.000   0.000          1.0            1
   24      2       1    0.667   0.272          0.3            1
   36      2       0    0.667   0.272          0.3            1
   48      2       0    0.667   0.272          0.3            1
   60      2       0    0.667   0.272          0.3            1
  120      1       0    0.667   0.272          0.3            1

                TNM_CLIN_STAGE_GROUP=3 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       1    0.667   0.272          0.3            1
   24      2       0    0.667   0.272          0.3            1
   36      2       0    0.667   0.272          0.3            1
   48      2       0    0.667   0.272          0.3            1
   60      2       0    0.667   0.272          0.3            1
  120      1       0    0.667   0.272          0.3            1

                TNM_CLIN_STAGE_GROUP=3A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1
  120      1       0        1       0            1            1

                TNM_CLIN_STAGE_GROUP=3B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0        1       0            1            1
   24      2       0        1       0            1            1
   36      2       0        1       0            1            1
   48      2       0        1       0            1            1
   60      2       0        1       0            1            1

                TNM_CLIN_STAGE_GROUP=4 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       2    0.833   0.108        0.647            1
   24      8       1    0.741   0.129        0.526            1
   36      8       0    0.741   0.129        0.526            1
   48      8       0    0.741   0.129        0.526            1
   60      8       0    0.741   0.129        0.526            1
  120      3       0    0.741   0.129        0.526            1

                TNM_CLIN_STAGE_GROUP=4A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      5       1    0.857   0.132        0.633            1
   24      5       0    0.857   0.132        0.633            1
   36      5       0    0.857   0.132        0.633            1
   48      5       0    0.857   0.132        0.633            1
   60      5       0    0.857   0.132        0.633            1
  120      1       1    0.643   0.210        0.338            1

                TNM_CLIN_STAGE_GROUP=4B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      5       1    0.875   0.117        0.673            1
   24      2       3    0.350   0.197        0.116            1
   36      2       0    0.350   0.197        0.116            1
   48      2       0    0.350   0.197        0.116            1
   60      2       0    0.350   0.197        0.116            1

                TNM_CLIN_STAGE_GROUP=99 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     10       0      1.0   0.000        1.000        1.000
   24      6       4      0.6   0.155        0.362        0.995
   36      6       0      0.6   0.155        0.362        0.995
   48      6       0      0.6   0.155        0.362        0.995
   60      6       0      0.6   0.155        0.362        0.995
  120      2       0      0.6   0.155        0.362        0.995




   
## Univariable Cox Proportional Hazard Model for:  TNM_CLIN_STAGE_GROUP
Loglik converged before variable  6 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_CLIN_STAGE_GROUP, data = data)

  n= 87, number of events= 23 

                             coef  exp(coef)   se(coef)      z Pr(>|z|)
TNM_CLIN_STAGE_GROUP1A -1.211e+00  2.980e-01  1.226e+00 -0.987    0.323
TNM_CLIN_STAGE_GROUP1B  1.527e+00  4.604e+00  1.001e+00  1.525    0.127
TNM_CLIN_STAGE_GROUP2   5.639e-01  1.758e+00  1.003e+00  0.562    0.574
TNM_CLIN_STAGE_GROUP2A  1.970e-01  1.218e+00  1.226e+00  0.161    0.872
TNM_CLIN_STAGE_GROUP3   5.623e-01  1.755e+00  1.227e+00  0.458    0.647
TNM_CLIN_STAGE_GROUP3A -1.601e+01  1.118e-07  5.898e+03 -0.003    0.998
TNM_CLIN_STAGE_GROUP3B  7.050e-01  2.024e+00  1.227e+00  0.575    0.566
TNM_CLIN_STAGE_GROUP4   2.827e-01  1.327e+00  9.153e-01  0.309    0.757
TNM_CLIN_STAGE_GROUP4A  3.981e-01  1.489e+00  1.002e+00  0.397    0.691
TNM_CLIN_STAGE_GROUP4B  1.392e+00  4.021e+00  8.674e-01  1.604    0.109
TNM_CLIN_STAGE_GROUP99  6.657e-01  1.946e+00  8.679e-01  0.767    0.443

                       exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_STAGE_GROUP1A 2.980e-01  3.356e+00   0.02695     3.295
TNM_CLIN_STAGE_GROUP1B 4.604e+00  2.172e-01   0.64683    32.765
TNM_CLIN_STAGE_GROUP2  1.758e+00  5.690e-01   0.24626    12.544
TNM_CLIN_STAGE_GROUP2A 1.218e+00  8.212e-01   0.11020    13.457
TNM_CLIN_STAGE_GROUP3  1.755e+00  5.699e-01   0.15843    19.433
TNM_CLIN_STAGE_GROUP3A 1.118e-07  8.941e+06   0.00000       Inf
TNM_CLIN_STAGE_GROUP3B 2.024e+00  4.941e-01   0.18276    22.409
TNM_CLIN_STAGE_GROUP4  1.327e+00  7.537e-01   0.22063     7.978
TNM_CLIN_STAGE_GROUP4A 1.489e+00  6.716e-01   0.20876    10.621
TNM_CLIN_STAGE_GROUP4B 4.021e+00  2.487e-01   0.73454    22.014
TNM_CLIN_STAGE_GROUP99 1.946e+00  5.139e-01   0.35511    10.662

Concordance= 0.686  (se = 0.062 )
Rsquare= 0.119   (max possible= 0.888 )
Likelihood ratio test= 11.02  on 11 df,   p=0.4414
Wald test            = 8.67  on 11 df,   p=0.6526
Score (logrank) test = 11.54  on 11 df,   p=0.3993
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 12 rows containing missing values (geom_text).Removed 12 rows containing missing values (geom_text).Removed 12 rows containing missing values (geom_text).Removed 12 rows containing missing values (geom_text).Removed 12 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_CLIN_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 12.

Pathologic T Stage

uni_var(test_var = "TNM_PATH_T", data_imp = data)
_________________________________________________
   
## TNM_PATH_T
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_T, data = data)

   1 observation deleted due to missingness 
      n  events  median 0.95LCL 0.95UCL 
     86      23      NA      NA      NA 

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_T, data = data)

1 observation deleted due to missingness 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     68       7    0.914  0.0312        0.855        0.977
   24     54      12    0.749  0.0501        0.657        0.854
   36     51       1    0.735  0.0511        0.641        0.842
   48     47       1    0.720  0.0522        0.624        0.830
   60     46       0    0.720  0.0522        0.624        0.830
  120     14       2    0.683  0.0557        0.582        0.802



   
## Univariable Cox Proportional Hazard Model for:  TNM_PATH_T

[1] "Only one level, no Cox model performed"




   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_PATH_T

Pathologic N Stage

uni_var(test_var = "TNM_PATH_N", data_imp = data)
_________________________________________________
   
## TNM_PATH_N
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_N, data = data)

   1 observation deleted due to missingness 
      n  events  median 0.95LCL 0.95UCL 
     86      23      NA      NA      NA 

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_N, data = data)

1 observation deleted due to missingness 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     68       7    0.914  0.0312        0.855        0.977
   24     54      12    0.749  0.0501        0.657        0.854
   36     51       1    0.735  0.0511        0.641        0.842
   48     47       1    0.720  0.0522        0.624        0.830
   60     46       0    0.720  0.0522        0.624        0.830
  120     14       2    0.683  0.0557        0.582        0.802



   
## Univariable Cox Proportional Hazard Model for:  TNM_PATH_N

[1] "Only one level, no Cox model performed"




   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_PATH_N

Pathologic M Stage

uni_var(test_var = "TNM_PATH_M", data_imp = data)
_________________________________________________
   
## TNM_PATH_M
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_M, data = data)

   3 observations deleted due to missingness 
      n  events  median 0.95LCL 0.95UCL 
     84      23      NA      NA      NA 

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_M, data = data)

3 observations deleted due to missingness 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     67       7    0.912  0.0319        0.851        0.976
   24     53      12    0.745  0.0507        0.652        0.852
   36     50       1    0.731  0.0518        0.636        0.839
   48     46       1    0.715  0.0529        0.619        0.827
   60     45       0    0.715  0.0529        0.619        0.827
  120     14       2    0.678  0.0564        0.576        0.798



   
## Univariable Cox Proportional Hazard Model for:  TNM_PATH_M

[1] "Only one level, no Cox model performed"




   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_PATH_M

Pathologic Stage Group

uni_var(test_var = "TNM_PATH_STAGE_GROUP", data_imp = data)
_________________________________________________
   
## TNM_PATH_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_STAGE_GROUP, data = data)

   2 observations deleted due to missingness 
                         n events median 0.95LCL 0.95UCL
TNM_PATH_STAGE_GROUP=1   3      1   30.1   30.09      NA
TNM_PATH_STAGE_GROUP=1A  4      0     NA      NA      NA
TNM_PATH_STAGE_GROUP=1B  2      1   21.7   21.72      NA
TNM_PATH_STAGE_GROUP=2   2      0     NA      NA      NA
TNM_PATH_STAGE_GROUP=2A  1      0     NA      NA      NA
TNM_PATH_STAGE_GROUP=3   1      0     NA      NA      NA
TNM_PATH_STAGE_GROUP=3A  1      0     NA      NA      NA
TNM_PATH_STAGE_GROUP=3B  1      0     NA      NA      NA
TNM_PATH_STAGE_GROUP=4   4      1     NA   18.10      NA
TNM_PATH_STAGE_GROUP=4A  1      1   80.0      NA      NA
TNM_PATH_STAGE_GROUP=4B  3      2   19.1    1.05      NA
TNM_PATH_STAGE_GROUP=99 62     16     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_STAGE_GROUP, data = data)

2 observations deleted due to missingness 
                TNM_PATH_STAGE_GROUP=1 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      3       0      1.0   0.000        1.000            1
   24      3       0      1.0   0.000        1.000            1
   36      1       1      0.5   0.354        0.125            1
   48      1       0      0.5   0.354        0.125            1
   60      1       0      0.5   0.354        0.125            1

                TNM_PATH_STAGE_GROUP=1A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      4       0        1       0            1            1
   24      4       0        1       0            1            1
   36      4       0        1       0            1            1
   48      4       0        1       0            1            1
   60      4       0        1       0            1            1
  120      2       0        1       0            1            1

                TNM_PATH_STAGE_GROUP=1B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0      1.0   0.000        1.000            1
   24      1       1      0.5   0.354        0.125            1
   36      1       0      0.5   0.354        0.125            1
   48      1       0      0.5   0.354        0.125            1
   60      1       0      0.5   0.354        0.125            1

                TNM_PATH_STAGE_GROUP=2 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0        1       0            1            1
   24      2       0        1       0            1            1
   36      2       0        1       0            1            1
   48      2       0        1       0            1            1
   60      2       0        1       0            1            1
  120      1       0        1       0            1            1

                TNM_PATH_STAGE_GROUP=2A 
     time n.risk n.event survival std.err lower 95% CI upper 95% CI

                TNM_PATH_STAGE_GROUP=3 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1

                TNM_PATH_STAGE_GROUP=3A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1
  120      1       0        1       0            1            1

                TNM_PATH_STAGE_GROUP=3B 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1

                TNM_PATH_STAGE_GROUP=4 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      4       0     1.00   0.000        1.000            1
   24      3       1     0.75   0.217        0.426            1
   36      3       0     0.75   0.217        0.426            1
   48      3       0     0.75   0.217        0.426            1
   60      3       0     0.75   0.217        0.426            1
  120      1       0     0.75   0.217        0.426            1

                TNM_PATH_STAGE_GROUP=4A 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1

                TNM_PATH_STAGE_GROUP=4B 
        time       n.risk      n.event     survival      std.err lower 95% CI upper 95% CI 
      12.000        1.000        1.000        0.667        0.272        0.300        1.000 

                TNM_PATH_STAGE_GROUP=99 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     48       6    0.896  0.0403        0.820        0.978
   24     38       8    0.743  0.0596        0.635        0.869
   36     37       0    0.743  0.0596        0.635        0.869
   48     33       1    0.722  0.0616        0.610        0.853
   60     32       0    0.722  0.0616        0.610        0.853
  120      9       1    0.697  0.0643        0.581        0.835




   
## Univariable Cox Proportional Hazard Model for:  TNM_PATH_STAGE_GROUP
Loglik converged before variable  1,3,4,5,6,7 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ TNM_PATH_STAGE_GROUP, data = data)

  n= 85, number of events= 22 
   (2 observations deleted due to missingness)

                             coef  exp(coef)   se(coef)      z Pr(>|z|)
TNM_PATH_STAGE_GROUP1A -1.888e+01  6.344e-09  9.726e+03 -0.002    0.998
TNM_PATH_STAGE_GROUP1B  4.363e-01  1.547e+00  1.415e+00  0.308    0.758
TNM_PATH_STAGE_GROUP2  -1.888e+01  6.344e-09  1.375e+04 -0.001    0.999
TNM_PATH_STAGE_GROUP2A -1.895e+01  5.867e-09  8.576e+04  0.000    1.000
TNM_PATH_STAGE_GROUP3  -1.888e+01  6.344e-09  1.945e+04 -0.001    0.999
TNM_PATH_STAGE_GROUP3A -1.888e+01  6.344e-09  1.945e+04 -0.001    0.999
TNM_PATH_STAGE_GROUP3B -1.888e+01  6.344e-09  1.945e+04 -0.001    0.999
TNM_PATH_STAGE_GROUP4  -3.416e-01  7.106e-01  1.417e+00 -0.241    0.809
TNM_PATH_STAGE_GROUP4A  8.757e-01  2.400e+00  1.419e+00  0.617    0.537
TNM_PATH_STAGE_GROUP4B  1.854e+00  6.385e+00  1.242e+00  1.492    0.136
TNM_PATH_STAGE_GROUP99 -8.897e-02  9.149e-01  1.033e+00 -0.086    0.931

                       exp(coef) exp(-coef) lower .95 upper .95
TNM_PATH_STAGE_GROUP1A 6.344e-09  1.576e+08   0.00000       Inf
TNM_PATH_STAGE_GROUP1B 1.547e+00  6.465e-01   0.09667    24.754
TNM_PATH_STAGE_GROUP2  6.344e-09  1.576e+08   0.00000       Inf
TNM_PATH_STAGE_GROUP2A 5.867e-09  1.705e+08   0.00000       Inf
TNM_PATH_STAGE_GROUP3  6.344e-09  1.576e+08   0.00000       Inf
TNM_PATH_STAGE_GROUP3A 6.344e-09  1.576e+08   0.00000       Inf
TNM_PATH_STAGE_GROUP3B 6.344e-09  1.576e+08   0.00000       Inf
TNM_PATH_STAGE_GROUP4  7.106e-01  1.407e+00   0.04424    11.414
TNM_PATH_STAGE_GROUP4A 2.400e+00  4.166e-01   0.14874    38.739
TNM_PATH_STAGE_GROUP4B 6.385e+00  1.566e-01   0.55945    72.879
TNM_PATH_STAGE_GROUP99 9.149e-01  1.093e+00   0.12068     6.935

Concordance= 0.62  (se = 0.051 )
Rsquare= 0.132   (max possible= 0.883 )
Likelihood ratio test= 11.99  on 11 df,   p=0.3642
Wald test            = 7.17  on 11 df,   p=0.785
Score (logrank) test = 14.6  on 11 df,   p=0.2015
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 12 rows containing missing values (geom_text).Removed 12 rows containing missing values (geom_text).Removed 12 rows containing missing values (geom_text).Removed 12 rows containing missing values (geom_text).Removed 12 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  TNM_PATH_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 12.

Margins

uni_var(test_var = "MARGINS", data_imp = data)
_________________________________________________
   
## MARGINS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ MARGINS, data = data)

                           n events median 0.95LCL 0.95UCL
MARGINS=No Residual        4      0     NA      NA      NA
MARGINS=Residual, NOS      1      0     NA      NA      NA
MARGINS=Microscopic Resid  1      0     NA      NA      NA
MARGINS=Macroscopic Resid  1      0     NA      NA      NA
MARGINS=Not evaluable      5      2     NA      12      NA
MARGINS=No surg           66     20     NA      NA      NA
MARGINS=Unknown            9      1     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ MARGINS, data = data)

                MARGINS=No Residual 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1

                MARGINS=Residual, NOS 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1

                MARGINS=Microscopic Resid 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1
  120      1       0        1       0            1            1

                MARGINS=Macroscopic Resid 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1

                MARGINS=Not evaluable 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      4       1      0.8   0.179        0.516            1
   24      3       1      0.6   0.219        0.293            1
   36      2       0      0.6   0.219        0.293            1
   48      2       0      0.6   0.219        0.293            1
   60      2       0      0.6   0.219        0.293            1
  120      1       0      0.6   0.219        0.293            1

                MARGINS=No surg 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     53       6    0.905  0.0371        0.835        0.980
   24     41      10    0.729  0.0581        0.624        0.853
   36     39       1    0.711  0.0594        0.604        0.838
   48     36       1    0.692  0.0608        0.582        0.822
   60     36       0    0.692  0.0608        0.582        0.822
  120     11       2    0.645  0.0651        0.530        0.787

                MARGINS=Unknown 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      8       0    1.000   0.000        1.000            1
   24      7       1    0.875   0.117        0.673            1
   36      7       0    0.875   0.117        0.673            1
   48      6       0    0.875   0.117        0.673            1
   60      5       0    0.875   0.117        0.673            1
  120      1       0    0.875   0.117        0.673            1




   
## Univariable Cox Proportional Hazard Model for:  MARGINS
Loglik converged before variable  1,2,3,4,5,6 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ MARGINS, data = data)

  n= 87, number of events= 23 

                               coef  exp(coef)   se(coef)     z Pr(>|z|)
MARGINSResidual, NOS     -3.184e-03  9.968e-01  1.830e+04 0.000    1.000
MARGINSMicroscopic Resid -3.184e-03  9.968e-01  1.830e+04 0.000    1.000
MARGINSMacroscopic Resid -3.184e-03  9.968e-01  1.830e+04 0.000    1.000
MARGINSNot evaluable      1.865e+01  1.261e+08  1.190e+04 0.002    0.999
MARGINSNo surg            1.822e+01  8.188e+07  1.190e+04 0.002    0.999
MARGINSUnknown            1.709e+01  2.636e+07  1.190e+04 0.001    0.999

                         exp(coef) exp(-coef) lower .95 upper .95
MARGINSResidual, NOS     9.968e-01  1.003e+00         0       Inf
MARGINSMicroscopic Resid 9.968e-01  1.003e+00         0       Inf
MARGINSMacroscopic Resid 9.968e-01  1.003e+00         0       Inf
MARGINSNot evaluable     1.261e+08  7.933e-09         0       Inf
MARGINSNo surg           8.188e+07  1.221e-08         0       Inf
MARGINSUnknown           2.636e+07  3.794e-08         0       Inf

Concordance= 0.595  (se = 0.046 )
Rsquare= 0.062   (max possible= 0.888 )
Likelihood ratio test= 5.55  on 6 df,   p=0.4757
Wald test            = 1.65  on 6 df,   p=0.9487
Score (logrank) test = 3.71  on 6 df,   p=0.7154
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  MARGINS

Margins Yes/No

#uni_var(test_var = "MARGINS_YN", data_imp = data)

30 Day Readmission

uni_var(test_var = "READM_HOSP_30_DAYS_F", data_imp = data)
_________________________________________________
   
## READM_HOSP_30_DAYS_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ READM_HOSP_30_DAYS_F, data = data)

                                            n events median 0.95LCL 0.95UCL
READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit 84     21     NA      NA      NA
READM_HOSP_30_DAYS_F=9                      3      2   20.9      12      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ READM_HOSP_30_DAYS_F, data = data)

                READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     66       7    0.912  0.0319        0.851        0.976
   24     54      10    0.771  0.0491        0.680        0.873
   36     51       1    0.756  0.0504        0.663        0.861
   48     48       1    0.740  0.0516        0.646        0.849
   60     47       0    0.740  0.0516        0.646        0.849
  120     14       2    0.704  0.0553        0.603        0.821

                READM_HOSP_30_DAYS_F=9 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      3       0    1.000   0.000       1.0000            1
   24      1       2    0.333   0.272       0.0673            1
   36      1       0    0.333   0.272       0.0673            1




   
## Univariable Cox Proportional Hazard Model for:  READM_HOSP_30_DAYS_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ READM_HOSP_30_DAYS_F, data = data)

  n= 87, number of events= 23 

                        coef exp(coef) se(coef)     z Pr(>|z|)
READM_HOSP_30_DAYS_F9 1.2202    3.3877   0.7462 1.635    0.102

                      exp(coef) exp(-coef) lower .95 upper .95
READM_HOSP_30_DAYS_F9     3.388     0.2952    0.7848     14.62

Concordance= 0.529  (se = 0.019 )
Rsquare= 0.022   (max possible= 0.888 )
Likelihood ratio test= 1.95  on 1 df,   p=0.1621
Wald test            = 2.67  on 1 df,   p=0.102
Score (logrank) test = 3.02  on 1 df,   p=0.08216
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  READM_HOSP_30_DAYS_F

Radiation Type

uni_var(test_var = "RX_SUMM_RADIATION_F", data_imp = data)
_________________________________________________
   
## RX_SUMM_RADIATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_SUMM_RADIATION_F, data = data)

                                    n events median 0.95LCL 0.95UCL
RX_SUMM_RADIATION_F=None           76     20     NA      NA      NA
RX_SUMM_RADIATION_F=Beam Radiation 10      2     NA      NA      NA
RX_SUMM_RADIATION_F=Unknown         1      1   21.1      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_SUMM_RADIATION_F, data = data)

                RX_SUMM_RADIATION_F=None 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     59       6    0.916  0.0327        0.855        0.983
   24     47      11    0.743  0.0540        0.644        0.857
   36     45       0    0.743  0.0540        0.644        0.857
   48     41       1    0.726  0.0555        0.625        0.843
   60     40       0    0.726  0.0555        0.625        0.843
  120     12       2    0.684  0.0596        0.577        0.812

                RX_SUMM_RADIATION_F=Beam Radiation 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      9       1    0.900  0.0949        0.732            1
   24      8       0    0.900  0.0949        0.732            1
   36      7       1    0.787  0.1340        0.564            1
   48      7       0    0.787  0.1340        0.564            1
   60      7       0    0.787  0.1340        0.564            1
  120      2       0    0.787  0.1340        0.564            1

                RX_SUMM_RADIATION_F=Unknown 
        time       n.risk      n.event     survival      std.err lower 95% CI upper 95% CI 
          12            1            0            1            0            1            1 




   
## Univariable Cox Proportional Hazard Model for:  RX_SUMM_RADIATION_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_SUMM_RADIATION_F, data = data)

  n= 87, number of events= 23 

                                     coef exp(coef) se(coef)      z Pr(>|z|)
RX_SUMM_RADIATION_FBeam Radiation -0.4565    0.6335   0.7419 -0.615    0.538
RX_SUMM_RADIATION_FUnknown         1.4723    4.3591   1.0354  1.422    0.155

                                  exp(coef) exp(-coef) lower .95 upper .95
RX_SUMM_RADIATION_FBeam Radiation    0.6335     1.5785    0.1480     2.712
RX_SUMM_RADIATION_FUnknown           4.3591     0.2294    0.5729    33.169

Concordance= 0.537  (se = 0.038 )
Rsquare= 0.021   (max possible= 0.888 )
Likelihood ratio test= 1.87  on 2 df,   p=0.3924
Wald test            = 2.52  on 2 df,   p=0.2831
Score (logrank) test = 3  on 2 df,   p=0.2232
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  RX_SUMM_RADIATION_F

Lymphovascular Invasion

#uni_var(test_var = "LYMPH_VASCULAR_INVASION_F", data_imp = data)

Endoscopic/Robotic

uni_var(test_var = "RX_HOSP_SURG_APPR_2010_F", data_imp = data)
_________________________________________________
   
## RX_HOSP_SURG_APPR_2010_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)

   63 observations deleted due to missingness 
                                       n events median 0.95LCL 0.95UCL
RX_HOSP_SURG_APPR_2010_F=No_Surg      20      2     NA      NA      NA
RX_HOSP_SURG_APPR_2010_F=Open_Unknown  4      0     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)

63 observations deleted due to missingness 
                RX_HOSP_SURG_APPR_2010_F=No_Surg 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     12       1    0.938  0.0605        0.826            1
   24     10       1    0.852  0.0981        0.680            1
   36     10       0    0.852  0.0981        0.680            1
   48      8       0    0.852  0.0981        0.680            1
   60      8       0    0.852  0.0981        0.680            1

                RX_HOSP_SURG_APPR_2010_F=Open_Unknown 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1




   
## Univariable Cox Proportional Hazard Model for:  RX_HOSP_SURG_APPR_2010_F
Loglik converged before variable  1 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)

  n= 24, number of events= 2 
   (63 observations deleted due to missingness)

                                           coef  exp(coef)   se(coef)      z Pr(>|z|)
RX_HOSP_SURG_APPR_2010_FOpen_Unknown -1.817e+01  1.289e-08  1.896e+04 -0.001    0.999

                                     exp(coef) exp(-coef) lower .95 upper .95
RX_HOSP_SURG_APPR_2010_FOpen_Unknown 1.289e-08   77584019         0       Inf

Concordance= 0.554  (se = 0.117 )
Rsquare= 0.017   (max possible= 0.361 )
Likelihood ratio test= 0.41  on 1 df,   p=0.5222
Wald test            = 0  on 1 df,   p=0.9992
Score (logrank) test = 0.22  on 1 df,   p=0.6422
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 2 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  RX_HOSP_SURG_APPR_2010_F

Surgery Radiation Sequence

uni_var(test_var = "SURG_RAD_SEQ", data_imp = data)
_________________________________________________
   
## SURG_RAD_SEQ
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURG_RAD_SEQ, data = data)

                            n events median 0.95LCL 0.95UCL
SURG_RAD_SEQ=Surg Alone    19      3     NA      NA      NA
SURG_RAD_SEQ=Surg then Rad  1      0     NA      NA      NA
SURG_RAD_SEQ=Rad Alone      9      2     NA      NA      NA
SURG_RAD_SEQ=No Treatment  55     16     NA      NA      NA
SURG_RAD_SEQ=Other          3      2   41.3    21.1      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURG_RAD_SEQ, data = data)

                SURG_RAD_SEQ=Surg Alone 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     14       1    0.947  0.0512        0.852            1
   24     12       2    0.812  0.0989        0.640            1
   36     11       0    0.812  0.0989        0.640            1
   48     10       0    0.812  0.0989        0.640            1
   60     10       0    0.812  0.0989        0.640            1
  120      3       0    0.812  0.0989        0.640            1

                SURG_RAD_SEQ=Surg then Rad 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      1       0        1       0            1            1
   24      1       0        1       0            1            1
   36      1       0        1       0            1            1
   48      1       0        1       0            1            1
   60      1       0        1       0            1            1

                SURG_RAD_SEQ=Rad Alone 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      8       1    0.889   0.105        0.706            1
   24      7       0    0.889   0.105        0.706            1
   36      6       1    0.762   0.148        0.521            1
   48      6       0    0.762   0.148        0.521            1
   60      6       0    0.762   0.148        0.521            1
  120      2       0    0.762   0.148        0.521            1

                SURG_RAD_SEQ=No Treatment 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     43       5    0.905  0.0406        0.828        0.988
   24     33       9    0.711  0.0655        0.594        0.852
   36     32       0    0.711  0.0655        0.594        0.852
   48     30       0    0.711  0.0655        0.594        0.852
   60     30       0    0.711  0.0655        0.594        0.852
  120      9       2    0.655  0.0713        0.529        0.811

                SURG_RAD_SEQ=Other 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      3       0    1.000   0.000       1.0000            1
   24      2       1    0.667   0.272       0.2995            1
   36      2       0    0.667   0.272       0.2995            1
   48      1       1    0.333   0.272       0.0673            1




   
## Univariable Cox Proportional Hazard Model for:  SURG_RAD_SEQ
Loglik converged before variable  1 ; beta may be infinite. 
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURG_RAD_SEQ, data = data)

  n= 87, number of events= 23 

                                coef  exp(coef)   se(coef)      z Pr(>|z|)
SURG_RAD_SEQSurg then Rad -1.562e+01  1.646e-07  5.102e+03 -0.003    0.998
SURG_RAD_SEQRad Alone      1.567e-01  1.170e+00  9.133e-01  0.172    0.864
SURG_RAD_SEQNo Treatment   5.846e-01  1.794e+00  6.293e-01  0.929    0.353
SURG_RAD_SEQOther          1.307e+00  3.694e+00  9.168e-01  1.425    0.154

                          exp(coef) exp(-coef) lower .95 upper .95
SURG_RAD_SEQSurg then Rad 1.646e-07  6.077e+06    0.0000       Inf
SURG_RAD_SEQRad Alone     1.170e+00  8.549e-01    0.1953     7.006
SURG_RAD_SEQNo Treatment  1.794e+00  5.573e-01    0.5227     6.160
SURG_RAD_SEQOther         3.694e+00  2.707e-01    0.6125    22.275

Concordance= 0.568  (se = 0.054 )
Rsquare= 0.034   (max possible= 0.888 )
Likelihood ratio test= 3.01  on 4 df,   p=0.5554
Wald test            = 2.36  on 4 df,   p=0.6701
Score (logrank) test = 2.92  on 4 df,   p=0.5706
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 5 rows containing missing values (geom_text).Removed 5 rows containing missing values (geom_text).Removed 5 rows containing missing values (geom_text).Removed 5 rows containing missing values (geom_text).Removed 5 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  SURG_RAD_SEQ

Surgery Yes/No

uni_var(test_var = "SURGERY_YN", data_imp = data)
_________________________________________________
   
## SURGERY_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURGERY_YN, data = data)

                n events median 0.95LCL 0.95UCL
SURGERY_YN=No  65     19     NA      NA      NA
SURGERY_YN=Ukn  2      1   41.3    41.3      NA
SURGERY_YN=Yes 20      3     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURGERY_YN, data = data)

                SURGERY_YN=No 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     52       6    0.903  0.0376        0.832        0.980
   24     40      10    0.725  0.0589        0.618        0.850
   36     38       1    0.706  0.0603        0.597        0.835
   48     36       0    0.706  0.0603        0.597        0.835
   60     36       0    0.706  0.0603        0.597        0.835
  120     11       2    0.659  0.0649        0.543        0.799

                SURGERY_YN=Ukn 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0      1.0   0.000        1.000            1
   24      2       0      1.0   0.000        1.000            1
   36      2       0      1.0   0.000        1.000            1
   48      1       1      0.5   0.354        0.125            1

                SURGERY_YN=Yes 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     15       1    0.950  0.0487        0.859            1
   24     13       2    0.823  0.0935        0.659            1
   36     12       0    0.823  0.0935        0.659            1
   48     11       0    0.823  0.0935        0.659            1
   60     11       0    0.823  0.0935        0.659            1
  120      3       0    0.823  0.0935        0.659            1




   
## Univariable Cox Proportional Hazard Model for:  SURGERY_YN

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURGERY_YN, data = data)

  n= 87, number of events= 23 

                 coef exp(coef) se(coef)      z Pr(>|z|)
SURGERY_YNUkn  0.3470    1.4149   1.0287  0.337    0.736
SURGERY_YNYes -0.6419    0.5263   0.6215 -1.033    0.302

              exp(coef) exp(-coef) lower .95 upper .95
SURGERY_YNUkn    1.4149     0.7068    0.1884    10.626
SURGERY_YNYes    0.5263     1.9001    0.1557     1.779

Concordance= 0.54  (se = 0.047 )
Rsquare= 0.016   (max possible= 0.888 )
Likelihood ratio test= 1.42  on 2 df,   p=0.492
Wald test            = 1.25  on 2 df,   p=0.5364
Score (logrank) test = 1.29  on 2 df,   p=0.524
no non-missing arguments to min; returning Infno non-missing arguments to max; returning -InfTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  SURGERY_YN

Radiation Yes/No

uni_var(test_var = "RADIATION_YN", data_imp = data)
_________________________________________________
   
## RADIATION_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RADIATION_YN, data = data)

   1 observation deleted due to missingness 
                  n events median 0.95LCL 0.95UCL
RADIATION_YN=No  76     20     NA      NA      NA
RADIATION_YN=Yes 10      2     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RADIATION_YN, data = data)

1 observation deleted due to missingness 
                RADIATION_YN=No 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     59       6    0.916  0.0327        0.855        0.983
   24     47      11    0.743  0.0540        0.644        0.857
   36     45       0    0.743  0.0540        0.644        0.857
   48     41       1    0.726  0.0555        0.625        0.843
   60     40       0    0.726  0.0555        0.625        0.843
  120     12       2    0.684  0.0596        0.577        0.812

                RADIATION_YN=Yes 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      9       1    0.900  0.0949        0.732            1
   24      8       0    0.900  0.0949        0.732            1
   36      7       1    0.787  0.1340        0.564            1
   48      7       0    0.787  0.1340        0.564            1
   60      7       0    0.787  0.1340        0.564            1
  120      2       0    0.787  0.1340        0.564            1




   
## Univariable Cox Proportional Hazard Model for:  RADIATION_YN

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ RADIATION_YN, data = data)

  n= 86, number of events= 22 
   (1 observation deleted due to missingness)

                   coef exp(coef) se(coef)      z Pr(>|z|)
RADIATION_YNYes -0.4555    0.6342   0.7419 -0.614    0.539

                exp(coef) exp(-coef) lower .95 upper .95
RADIATION_YNYes    0.6342      1.577    0.1481     2.715

Concordance= 0.524  (se = 0.038 )
Rsquare= 0.005   (max possible= 0.88 )
Likelihood ratio test= 0.43  on 1 df,   p=0.5136
Wald test            = 0.38  on 1 df,   p=0.5393
Score (logrank) test = 0.38  on 1 df,   p=0.5358





   
## Unadjusted Kaplan Meier Overall Survival Curve for:  RADIATION_YN

Chemo Yes/No

uni_var(test_var = "CHEMO_YN", data_imp = data)
_________________________________________________
   
## CHEMO_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CHEMO_YN, data = data)

              n events median 0.95LCL 0.95UCL
CHEMO_YN=No  29      3     NA      NA      NA
CHEMO_YN=Yes 55     19     NA    80.0      NA
CHEMO_YN=Ukn  3      1   21.1    21.1      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CHEMO_YN, data = data)

                CHEMO_YN=No 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     24       1    0.966  0.0339        0.901            1
   24     22       1    0.925  0.0510        0.830            1
   36     20       1    0.881  0.0649        0.763            1
   48     19       0    0.881  0.0649        0.763            1
   60     19       0    0.881  0.0649        0.763            1
  120      6       0    0.881  0.0649        0.763            1

                CHEMO_YN=Yes 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     43       6    0.885  0.0442        0.803        0.976
   24     32      10    0.675  0.0671        0.556        0.820
   36     31       0    0.675  0.0671        0.556        0.820
   48     28       1    0.652  0.0687        0.530        0.801
   60     27       0    0.652  0.0687        0.530        0.801
  120      8       2    0.597  0.0730        0.470        0.759

                CHEMO_YN=Ukn 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12      2       0      1.0   0.000        1.000            1
   24      1       1      0.5   0.354        0.125            1
   36      1       0      0.5   0.354        0.125            1
   48      1       0      0.5   0.354        0.125            1
   60      1       0      0.5   0.354        0.125            1




   
## Univariable Cox Proportional Hazard Model for:  CHEMO_YN

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ CHEMO_YN, data = data)

  n= 87, number of events= 23 

              coef exp(coef) se(coef)     z Pr(>|z|)  
CHEMO_YNYes 1.3203    3.7447   0.6216 2.124   0.0337 *
CHEMO_YNUkn 1.3948    4.0343   1.1566 1.206   0.2278  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

            exp(coef) exp(-coef) lower .95 upper .95
CHEMO_YNYes     3.745     0.2670    1.1073     12.66
CHEMO_YNUkn     4.034     0.2479    0.4181     38.93

Concordance= 0.609  (se = 0.053 )
Rsquare= 0.069   (max possible= 0.888 )
Likelihood ratio test= 6.18  on 2 df,   p=0.04547
Wald test            = 4.57  on 2 df,   p=0.1017
Score (logrank) test = 5.28  on 2 df,   p=0.07151
Removed 1 rows containing missing values (geom_errorbar).



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  CHEMO_YN

Treatment Yes/No

uni_var(test_var = "Tx_YN", data_imp = data)
_________________________________________________
   
## Tx_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ Tx_YN, data = data)

   3 observations deleted due to missingness 
             n events median 0.95LCL 0.95UCL
Tx_YN=FALSE 14      1     NA      NA      NA
Tx_YN=TRUE  70     21     NA      NA      NA

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ Tx_YN, data = data)

3 observations deleted due to missingness 
                Tx_YN=FALSE 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     12       0    1.000  0.0000        1.000            1
   24     11       1    0.917  0.0798        0.773            1
   36     11       0    0.917  0.0798        0.773            1
   48     11       0    0.917  0.0798        0.773            1
   60     11       0    0.917  0.0798        0.773            1
  120      3       0    0.917  0.0798        0.773            1

                Tx_YN=TRUE 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     55       7    0.894  0.0378        0.823        0.972
   24     43      10    0.728  0.0566        0.625        0.848
   36     40       1    0.710  0.0580        0.605        0.833
   48     36       1    0.691  0.0594        0.584        0.818
   60     35       0    0.691  0.0594        0.584        0.818
  120     11       2    0.646  0.0637        0.532        0.783




   
## Univariable Cox Proportional Hazard Model for:  Tx_YN

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ Tx_YN, data = data)

  n= 84, number of events= 22 
   (3 observations deleted due to missingness)

           coef exp(coef) se(coef)     z Pr(>|z|)
Tx_YNTRUE 1.589     4.898    1.024 1.552    0.121

          exp(coef) exp(-coef) lower .95 upper .95
Tx_YNTRUE     4.898     0.2042    0.6583     36.44

Concordance= 0.571  (se = 0.043 )
Rsquare= 0.046   (max possible= 0.885 )
Likelihood ratio test= 3.99  on 1 df,   p=0.04573
Wald test            = 2.41  on 1 df,   p=0.1207
Score (logrank) test = 2.96  on 1 df,   p=0.08547





   
## Unadjusted Kaplan Meier Overall Survival Curve for:  Tx_YN

Metastases at Dx

uni_var(test_var = "mets_at_dx_F", data_imp = data)
_________________________________________________
   
## mets_at_dx_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ mets_at_dx_F, data = data)

      n  events  median 0.95LCL 0.95UCL 
     87      23      NA      NA      NA 

Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ mets_at_dx_F, data = data)

 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   12     69       7    0.915  0.0308        0.856        0.977
   24     55      12    0.753  0.0495        0.662        0.856
   36     52       1    0.738  0.0506        0.646        0.844
   48     48       1    0.724  0.0517        0.629        0.832
   60     47       0    0.724  0.0517        0.629        0.832
  120     14       2    0.688  0.0550        0.588        0.804



   
## Univariable Cox Proportional Hazard Model for:  mets_at_dx_F

Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ mets_at_dx_F, data = data)

  n= 87, number of events= 23 

                 coef exp(coef) se(coef)  z Pr(>|z|)
mets_at_dx_FTRUE    0         1        0 NA       NA

                 exp(coef) exp(-coef) lower .95 upper .95
mets_at_dx_FTRUE         1          1         1         1

Concordance= 0.5  (se = 0 )
Rsquare= 0   (max possible= 0.888 )
Likelihood ratio test= 0  on 1 df,   p=1
Wald test            = NaN  on 1 df,   p=NaN
Score (logrank) test = 0  on 1 df,   p=1
relative range of values =   0 * EPS, is small (axis 0)



   
## Unadjusted Kaplan Meier Overall Survival Curve for:  mets_at_dx_F

Tumor specific Variables

Node Size

Cox Proportional Hazard Ratio

Model #1

Full analysis

model_one <- coxph(Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 0)
                     ~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F + INCOME_F + U_R_F +
                      FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F,
                     data = data)
Ran out of iterations and did not converge
model_one %>% summary()
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 
    0) ~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F + 
    INCOME_F + U_R_F + FACILITY_TYPE_F + FACILITY_LOCATION_F + 
    EDUCATION_F, data = data)

  n= 52, number of events= 20 
   (35 observations deleted due to missingness)

                                                    coef   exp(coef)    se(coef)      z Pr(>|z|)  
SURG_RAD_SEQSurg then Rad                      0.000e+00   1.000e+00   0.000e+00     NA       NA  
SURG_RAD_SEQRad Alone                         -9.473e+01   7.268e-42   1.044e+03 -0.091    0.928  
SURG_RAD_SEQNo Treatment                       2.498e+01   7.028e+10   2.780e+02  0.090    0.928  
SURG_RAD_SEQOther                              9.783e+01   3.079e+42   9.636e+04  0.001    0.999  
INSURANCE_FNone                                2.581e+02  1.233e+112   9.641e+04  0.003    0.998  
INSURANCE_FMedicaid                            1.510e+01   3.611e+06   5.286e+04  0.000    1.000  
INSURANCE_FMedicare                           -6.574e+00   1.396e-03   3.048e+00 -2.157    0.031 *
INSURANCE_FOther Government                    0.000e+00   1.000e+00   0.000e+00     NA       NA  
INSURANCE_FUnknown                            -6.659e+01   1.208e-29   9.635e+04 -0.001    0.999  
AGE                                            4.362e-02   1.045e+00   2.165e-01  0.201    0.840  
SEX_FFemale                                   -6.324e+01   3.432e-28   6.302e+02 -0.100    0.920  
RACE_FBlack                                   -9.781e+01   3.308e-43   1.106e+03 -0.088    0.930  
RACE_FOther/Unk                                0.000e+00   1.000e+00   0.000e+00     NA       NA  
RACE_FAsian                                    0.000e+00   1.000e+00   0.000e+00     NA       NA  
INCOME_F$38,000 - $47,999                      1.138e+02   2.725e+49   9.809e+02  0.116    0.908  
INCOME_F$48,000 - $62,999                      1.265e+01   3.113e+05   3.577e+02  0.035    0.972  
INCOME_F$63,000 +                             -3.053e+01   5.496e-14   5.220e+02 -0.058    0.953  
U_R_FUrban                                     1.608e+02   6.573e+69   1.404e+03  0.114    0.909  
FACILITY_TYPE_FAcademic/Research Program       1.118e+02   3.743e+48   1.123e+03  0.100    0.921  
FACILITY_TYPE_FIntegrated Network Ca Program  -9.608e+01   1.884e-42   8.082e+02 -0.119    0.905  
FACILITY_LOCATION_FMiddle Atlantic            -9.981e+01   4.489e-44   1.058e+03 -0.094    0.925  
FACILITY_LOCATION_FSouth Atlantic             -2.286e+02  5.514e-100   2.087e+03 -0.110    0.913  
FACILITY_LOCATION_FEast North Central         -1.695e+02   2.500e-74   1.662e+03 -0.102    0.919  
FACILITY_LOCATION_FEast South Central         -3.897e+02  5.442e-170   4.107e+04 -0.009    0.992  
FACILITY_LOCATION_FWest North Central         -1.253e+02   4.014e-55   1.163e+03 -0.108    0.914  
FACILITY_LOCATION_FWest South Central         -1.923e+02   2.944e-84   2.025e+03 -0.095    0.924  
FACILITY_LOCATION_FMountain                   -9.644e+01   1.314e-42   1.058e+03 -0.091    0.927  
FACILITY_LOCATION_FPacific                    -3.882e+02  2.539e-169   7.003e+03 -0.055    0.956  
EDUCATION_F13 - 20.9%                          1.399e+02   5.950e+60   1.283e+03  0.109    0.913  
EDUCATION_F7 - 12.9%                           7.680e+01   2.253e+33   6.302e+02  0.122    0.903  
EDUCATION_FLess than 7%                        9.245e+01   1.414e+40   1.044e+03  0.089    0.929  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

                                              exp(coef) exp(-coef)  lower .95  upper .95
SURG_RAD_SEQSurg then Rad                     1.000e+00  1.000e+00  1.000e+00  1.000e+00
SURG_RAD_SEQRad Alone                         7.268e-42  1.376e+41  0.000e+00        Inf
SURG_RAD_SEQNo Treatment                      7.028e+10  1.423e-11 1.513e-226 3.265e+247
SURG_RAD_SEQOther                             3.079e+42  3.247e-43  0.000e+00        Inf
INSURANCE_FNone                              1.233e+112 8.108e-113  0.000e+00        Inf
INSURANCE_FMedicaid                           3.611e+06  2.769e-07  0.000e+00        Inf
INSURANCE_FMedicare                           1.396e-03  7.165e+02  3.550e-06  5.487e-01
INSURANCE_FOther Government                   1.000e+00  1.000e+00  1.000e+00  1.000e+00
INSURANCE_FUnknown                            1.208e-29  8.279e+28  0.000e+00        Inf
AGE                                           1.045e+00  9.573e-01  6.833e-01  1.597e+00
SEX_FFemale                                   3.432e-28  2.914e+27  0.000e+00        Inf
RACE_FBlack                                   3.308e-43  3.023e+42  0.000e+00        Inf
RACE_FOther/Unk                               1.000e+00  1.000e+00  1.000e+00  1.000e+00
RACE_FAsian                                   1.000e+00  1.000e+00  1.000e+00  1.000e+00
INCOME_F$38,000 - $47,999                     2.725e+49  3.670e-50  0.000e+00        Inf
INCOME_F$48,000 - $62,999                     3.113e+05  3.212e-06 1.017e-299        Inf
INCOME_F$63,000 +                             5.496e-14  1.820e+13  0.000e+00        Inf
U_R_FUrban                                    6.573e+69  1.521e-70  0.000e+00        Inf
FACILITY_TYPE_FAcademic/Research Program      3.743e+48  2.671e-49  0.000e+00        Inf
FACILITY_TYPE_FIntegrated Network Ca Program  1.884e-42  5.309e+41  0.000e+00        Inf
FACILITY_LOCATION_FMiddle Atlantic            4.489e-44  2.227e+43  0.000e+00        Inf
FACILITY_LOCATION_FSouth Atlantic            5.514e-100  1.813e+99  0.000e+00        Inf
FACILITY_LOCATION_FEast North Central         2.500e-74  4.001e+73  0.000e+00        Inf
FACILITY_LOCATION_FEast South Central        5.442e-170 1.838e+169  0.000e+00        Inf
FACILITY_LOCATION_FWest North Central         4.014e-55  2.491e+54  0.000e+00        Inf
FACILITY_LOCATION_FWest South Central         2.944e-84  3.397e+83  0.000e+00        Inf
FACILITY_LOCATION_FMountain                   1.314e-42  7.610e+41  0.000e+00        Inf
FACILITY_LOCATION_FPacific                   2.539e-169 3.939e+168  0.000e+00        Inf
EDUCATION_F13 - 20.9%                         5.950e+60  1.681e-61  0.000e+00        Inf
EDUCATION_F7 - 12.9%                          2.253e+33  4.438e-34  0.000e+00        Inf
EDUCATION_FLess than 7%                       1.414e+40  7.071e-41  0.000e+00        Inf

Concordance= 0.995  (se = 0.068 )
Rsquare= 0.895   (max possible= 0.938 )
Likelihood ratio test= 117  on 31 df,   p=6.534e-12
Wald test            = 10.8  on 31 df,   p=0.9997
Score (logrank) test = 57.36  on 31 df,   p=0.002726

Summary of Model

model_one %>%
        tidy(., exponentiate = TRUE) %>%
        select(term, estimate, conf.low, conf.high, p.value) %>%
        rename(Variable = term,
               Hazard_Ratio = estimate) %>%
        tbl_df %>%
        print(n = nrow(.))

Linear Regression

summary(fit_surv) # R^2 = .8078, p = 0.0008977

Call:
lm(formula = DX_LASTCONTACT_DEATH_MONTHS ~ DX_STAGING_PROC_DAYS + 
    CROWFLY + CHEMO_YN + SEX_F + RACE_F + YEAR_OF_DIAGNOSIS + 
    SITE_TEXT + GRADE_F, data = data2)

Residuals:
   Min     1Q Median     3Q    Max 
-71.66 -25.46   0.00  25.88  73.40 

Coefficients:
                                                Estimate Std. Error t value Pr(>|t|)    
(Intercept)                                    122.05134   32.33450   3.775 0.000486 ***
DX_STAGING_PROC_DAYS                             0.40579    0.43571   0.931 0.356883    
CROWFLY                                          0.04998    0.04819   1.037 0.305441    
CHEMO_YNYes                                    -33.61429   14.09702  -2.384 0.021584 *  
SEX_FFemale                                     24.85570   13.89474   1.789 0.080684 .  
RACE_FBlack                                      4.77855   14.04436   0.340 0.735327    
RACE_FOther/Unk                                 83.58793   46.95944   1.780 0.082143 .  
RACE_FAsian                                     27.88489   22.07823   1.263 0.213394    
YEAR_OF_DIAGNOSIS2005                          -33.75836   24.41423  -1.383 0.173886    
YEAR_OF_DIAGNOSIS2006                          -22.80886   26.39554  -0.864 0.392318    
YEAR_OF_DIAGNOSIS2007                          -45.73138   21.13301  -2.164 0.036066 *  
YEAR_OF_DIAGNOSIS2008                          -21.28983   22.93201  -0.928 0.358388    
YEAR_OF_DIAGNOSIS2009                          -41.46382   25.65887  -1.616 0.113416    
YEAR_OF_DIAGNOSIS2010                          -60.37461   24.01853  -2.514 0.015774 *  
YEAR_OF_DIAGNOSIS2011                          -72.37274   24.90294  -2.906 0.005761 ** 
YEAR_OF_DIAGNOSIS2015                          -96.47904   23.34793  -4.132 0.000163 ***
SITE_TEXTC44.5 Skin of trunk                    16.82386   29.40320   0.572 0.570181    
SITE_TEXTC44.6 Skin of upper limb and shoulder -18.54506   32.81928  -0.565 0.574965    
SITE_TEXTC44.7 Skin of lower limb and hip      -23.06712   26.17634  -0.881 0.383098    
SITE_TEXTC44.8 Overlapping lesion of skin      -55.56995   31.45754  -1.767 0.084409 .  
SITE_TEXTC44.9 Skin, NOS                        -9.56612   25.94309  -0.369 0.714135    
GRADE_FNA/Unkown                               -55.95007   22.92785  -2.440 0.018872 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 41.25 on 43 degrees of freedom
  (17 observations deleted due to missingness)
Multiple R-squared:  0.5401,    Adjusted R-squared:  0.3155 
F-statistic: 2.405 on 21 and 43 DF,  p-value: 0.007362

Prediction Logistic Regression Models

Surgery

no_Ukns <- data %>%
  filter(SURGERY_YN != "Ukn") %>% 
  droplevels() %>% 
  mutate(SURGERY_YN = as.logical(SURGERY_YN))
fit_surg <- glm(SURG_TF ~ AGE_F + PRIMARY_SITE + GRADE_F + SEX_F + RACE_F + INSURANCE_F +
                      FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS,
   data = no_Ukns)
summary(fit_surg)

Call:
glm(formula = SURG_TF ~ AGE_F + PRIMARY_SITE + GRADE_F + SEX_F + 
    RACE_F + INSURANCE_F + FACILITY_TYPE_F + FACILITY_LOCATION_F + 
    EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS, data = no_Ukns)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-0.42677  -0.11553  -0.00235   0.14037   0.40171  

Coefficients:
                                             Estimate Std. Error t value Pr(>|t|)  
(Intercept)                                   0.47593    0.68000   0.700   0.4963  
AGE_F(54,64]                                  0.38338    0.19995   1.917   0.0774 .
AGE_F(64,74]                                  0.30230    0.38572   0.784   0.4473  
AGE_F(74,100]                                 0.51316    0.42787   1.199   0.2518  
PRIMARY_SITEC445                              0.76139    0.54728   1.391   0.1875  
PRIMARY_SITEC446                              0.86939    0.65007   1.337   0.2040  
PRIMARY_SITEC447                              0.51060    0.48365   1.056   0.3103  
PRIMARY_SITEC448                             -0.10753    0.44110  -0.244   0.8112  
PRIMARY_SITEC449                              0.74619    0.46312   1.611   0.1311  
GRADE_FNA/Unkown                              0.23431    0.25578   0.916   0.3763  
SEX_FFemale                                  -0.06316    0.22622  -0.279   0.7845  
RACE_FBlack                                  -0.01529    0.20294  -0.075   0.9411  
INSURANCE_FNone                               0.89947    0.91492   0.983   0.3435  
INSURANCE_FMedicaid                          -0.25564    0.41724  -0.613   0.5507  
INSURANCE_FMedicare                          -0.62013    0.26103  -2.376   0.0336 *
INSURANCE_FUnknown                           -1.00035    0.62441  -1.602   0.1332  
FACILITY_TYPE_FAcademic/Research Program      0.16925    0.31987   0.529   0.6056  
FACILITY_TYPE_FIntegrated Network Ca Program -0.20354    0.34772  -0.585   0.5683  
FACILITY_LOCATION_FMiddle Atlantic            0.08220    0.26454   0.311   0.7609  
FACILITY_LOCATION_FSouth Atlantic            -0.20481    0.26247  -0.780   0.4492  
FACILITY_LOCATION_FEast North Central        -0.42588    0.33060  -1.288   0.2201  
FACILITY_LOCATION_FEast South Central        -0.02856    0.40863  -0.070   0.9453  
FACILITY_LOCATION_FWest North Central        -0.25430    0.32296  -0.787   0.4452  
FACILITY_LOCATION_FWest South Central        -1.24469    0.65955  -1.887   0.0817 .
FACILITY_LOCATION_FMountain                  -0.06325    0.42695  -0.148   0.8845  
FACILITY_LOCATION_FPacific                    0.09072    0.47345   0.192   0.8510  
EDUCATION_F13 - 20.9%                        -0.25956    0.25949  -1.000   0.3354  
EDUCATION_F7 - 12.9%                          0.22726    0.26627   0.853   0.4088  
EDUCATION_FLess than 7%                      -0.22383    0.25308  -0.884   0.3925  
EXPN_GROUPPre-Expansion                      -0.04291    0.34228  -0.125   0.9021  
YEAR_OF_DIAGNOSIS2005                        -1.15331    0.55688  -2.071   0.0588 .
YEAR_OF_DIAGNOSIS2006                        -0.39164    0.47709  -0.821   0.4265  
YEAR_OF_DIAGNOSIS2007                        -1.23985    0.53534  -2.316   0.0375 *
YEAR_OF_DIAGNOSIS2008                         0.03872    0.41932   0.092   0.9278  
YEAR_OF_DIAGNOSIS2009                        -0.62564    0.46876  -1.335   0.2049  
YEAR_OF_DIAGNOSIS2010                        -0.53842    0.56304  -0.956   0.3564  
YEAR_OF_DIAGNOSIS2011                        -1.10293    0.60145  -1.834   0.0897 .
YEAR_OF_DIAGNOSIS2013                        -0.99335    0.84718  -1.173   0.2620  
YEAR_OF_DIAGNOSIS2015                        -1.03945    0.45982  -2.261   0.0416 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for gaussian family taken to be 0.1388242)

    Null deviance: 9.2308  on 51  degrees of freedom
Residual deviance: 1.8047  on 13  degrees of freedom
  (33 observations deleted due to missingness)
AIC: 52.806

Number of Fisher Scoring iterations: 2
exp(cbind("Odds ratio" = coef(fit_surg), confint.default(fit_surg, level = 0.95)))
                                             Odds ratio      2.5 %     97.5 %
(Intercept)                                   1.6095165 0.42449668  6.1026231
AGE_F(54,64]                                  1.4672426 0.99152403  2.1712038
AGE_F(64,74]                                  1.3529639 0.63526754  2.8814808
AGE_F(74,100]                                 1.6705617 0.72220502  3.8642442
PRIMARY_SITEC445                              2.1412502 0.73252074  6.2591435
PRIMARY_SITEC446                              2.3854495 0.66715422  8.5293163
PRIMARY_SITEC447                              1.6662833 0.64574765  4.2996674
PRIMARY_SITEC448                              0.8980521 0.37829927  2.1319036
PRIMARY_SITEC449                              2.1089499 0.85086093  5.2272580
GRADE_FNA/Unkown                              1.2640328 0.76565827  2.0868042
SEX_FFemale                                   0.9387967 0.60258299  1.4626022
RACE_FBlack                                   0.9848256 0.66163583  1.4658840
INSURANCE_FNone                               2.4583020 0.40912399 14.7711908
INSURANCE_FMedicaid                           0.7744221 0.34183795  1.7544264
INSURANCE_FMedicare                           0.5378765 0.32247403  0.8971611
INSURANCE_FUnknown                            0.3677511 0.10815635  1.2504200
FACILITY_TYPE_FAcademic/Research Program      1.1844196 0.63274336  2.2170915
FACILITY_TYPE_FIntegrated Network Ca Program  0.8158353 0.41269229  1.6127931
FACILITY_LOCATION_FMiddle Atlantic            1.0856769 0.64643008  1.8233902
FACILITY_LOCATION_FSouth Atlantic             0.8147991 0.48712383  1.3628928
FACILITY_LOCATION_FEast North Central         0.6531932 0.34169037  1.2486783
FACILITY_LOCATION_FEast South Central         0.9718451 0.43628267  2.1648417
FACILITY_LOCATION_FWest North Central         0.7754585 0.41177329  1.4603568
FACILITY_LOCATION_FWest South Central         0.2880313 0.07907364  1.0491743
FACILITY_LOCATION_FMountain                   0.9387056 0.40654386  2.1674617
FACILITY_LOCATION_FPacific                    1.0949611 0.43291221  2.7694758
EDUCATION_F13 - 20.9%                         0.7713886 0.46386590  1.2827852
EDUCATION_F7 - 12.9%                          1.2551519 0.74480667  2.1151881
EDUCATION_FLess than 7%                       0.7994481 0.48682020  1.3128403
EXPN_GROUPPre-Expansion                       0.9579959 0.48979889  1.8737406
YEAR_OF_DIAGNOSIS2005                         0.3155889 0.10595043  0.9400276
YEAR_OF_DIAGNOSIS2006                         0.6759497 0.26534492  1.7219396
YEAR_OF_DIAGNOSIS2007                         0.2894289 0.10135859  0.8264625
YEAR_OF_DIAGNOSIS2008                         1.0394780 0.45697138  2.3645126
YEAR_OF_DIAGNOSIS2009                         0.5349206 0.21344303  1.3405924
YEAR_OF_DIAGNOSIS2010                         0.5836697 0.19359999  1.7596609
YEAR_OF_DIAGNOSIS2011                         0.3318984 0.10210571  1.0788478
YEAR_OF_DIAGNOSIS2013                         0.3703327 0.07038403  1.9485433
YEAR_OF_DIAGNOSIS2015                         0.3536500 0.14360651  0.8709097

Chemo

no_Ukns <- data %>%
  filter(CHEMO_YN != "Ukn") %>% 
  droplevels() %>% 
  mutate(CHEMO_YN = fct_recode(CHEMO_YN,
                                        "0" = "No",
                                        "1" = "Yes")) %>% 
  mutate(CHEMO_YN = as.integer(CHEMO_YN)) %>% 
  mutate(CHEMO_YN = CHEMO_YN - 1)
fit_chemo <- glm(CHEMO_YN ~ AGE_F + PRIMARY_SITE + GRADE_F + SEX_F + RACE_F + INSURANCE_F +
                      FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS,
   data = no_Ukns)
summary(fit_chemo)

Call:
glm(formula = CHEMO_YN ~ AGE_F + PRIMARY_SITE + GRADE_F + SEX_F + 
    RACE_F + INSURANCE_F + FACILITY_TYPE_F + FACILITY_LOCATION_F + 
    EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS, data = no_Ukns)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-0.57095  -0.18986  -0.00192   0.20337   0.54684  

Coefficients:
                                             Estimate Std. Error t value Pr(>|t|)  
(Intercept)                                   2.00029    0.89860   2.226   0.0418 *
AGE_F(54,64]                                 -0.16392    0.26465  -0.619   0.5450  
AGE_F(64,74]                                 -0.86267    0.49754  -1.734   0.1034  
AGE_F(74,100]                                -0.08320    0.52511  -0.158   0.8762  
PRIMARY_SITEC445                             -0.71623    0.71508  -1.002   0.3324  
PRIMARY_SITEC446                             -1.27615    0.81629  -1.563   0.1388  
PRIMARY_SITEC447                             -0.89506    0.63630  -1.407   0.1799  
PRIMARY_SITEC448                             -0.32166    0.58077  -0.554   0.5878  
PRIMARY_SITEC449                             -0.41036    0.59502  -0.690   0.5009  
GRADE_FNA/Unkown                             -0.56920    0.33943  -1.677   0.1143  
SEX_FFemale                                   0.18374    0.30054   0.611   0.5501  
RACE_FBlack                                  -0.68795    0.26943  -2.553   0.0220 *
INSURANCE_FMedicaid                          -0.15247    0.54029  -0.282   0.7817  
INSURANCE_FMedicare                           0.08778    0.32208   0.273   0.7889  
INSURANCE_FUnknown                           -0.20405    0.75379  -0.271   0.7903  
FACILITY_TYPE_FAcademic/Research Program     -0.27401    0.38935  -0.704   0.4924  
FACILITY_TYPE_FIntegrated Network Ca Program -0.71692    0.45121  -1.589   0.1329  
FACILITY_LOCATION_FMiddle Atlantic           -0.26043    0.33564  -0.776   0.4499  
FACILITY_LOCATION_FSouth Atlantic            -0.00396    0.34479  -0.011   0.9910  
FACILITY_LOCATION_FEast North Central        -0.07526    0.42727  -0.176   0.8625  
FACILITY_LOCATION_FEast South Central        -0.36461    0.53774  -0.678   0.5081  
FACILITY_LOCATION_FWest North Central        -0.39974    0.41324  -0.967   0.3487  
FACILITY_LOCATION_FWest South Central         0.13745    0.84980   0.162   0.8737  
FACILITY_LOCATION_FMountain                  -0.08449    0.55705  -0.152   0.8815  
FACILITY_LOCATION_FPacific                   -0.05542    0.57272  -0.097   0.9242  
EDUCATION_F13 - 20.9%                        -0.29076    0.33266  -0.874   0.3959  
EDUCATION_F7 - 12.9%                         -0.12843    0.34564  -0.372   0.7154  
EDUCATION_FLess than 7%                      -0.30465    0.33256  -0.916   0.3741  
EXPN_GROUPPre-Expansion                       0.20932    0.45013   0.465   0.6486  
YEAR_OF_DIAGNOSIS2005                        -0.12152    0.71302  -0.170   0.8670  
YEAR_OF_DIAGNOSIS2006                        -0.31982    0.63234  -0.506   0.6204  
YEAR_OF_DIAGNOSIS2007                        -0.04065    0.66901  -0.061   0.9524  
YEAR_OF_DIAGNOSIS2008                        -0.15358    0.52718  -0.291   0.7748  
YEAR_OF_DIAGNOSIS2009                         0.37437    0.60371   0.620   0.5445  
YEAR_OF_DIAGNOSIS2010                        -0.45925    0.73184  -0.628   0.5398  
YEAR_OF_DIAGNOSIS2011                        -0.24787    0.76504  -0.324   0.7504  
YEAR_OF_DIAGNOSIS2013                        -0.85033    1.11790  -0.761   0.4587  
YEAR_OF_DIAGNOSIS2015                         0.16453    0.60309   0.273   0.7887  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for gaussian family taken to be 0.2478883)

    Null deviance: 12.8679  on 52  degrees of freedom
Residual deviance:  3.7183  on 15  degrees of freedom
  (31 observations deleted due to missingness)
AIC: 87.585

Number of Fisher Scoring iterations: 2
exp(cbind("Odds ratio" = coef(fit_chemo), confint.default(fit_chemo, level = 0.95)))
                                             Odds ratio      2.5 %     97.5 %
(Intercept)                                   7.3912286 1.27006357 43.0138004
AGE_F(54,64]                                  0.8488120 0.50529391  1.4258669
AGE_F(64,74]                                  0.4220337 0.15916296  1.1190568
AGE_F(74,100]                                 0.9201681 0.32877013  2.5753838
PRIMARY_SITEC445                              0.4885932 0.12030224  1.9843633
PRIMARY_SITEC446                              0.2791103 0.05635757  1.3822910
PRIMARY_SITEC447                              0.4085841 0.11739935  1.4219926
PRIMARY_SITEC448                              0.7249425 0.23224692  2.2628574
PRIMARY_SITEC449                              0.6634090 0.20667874  2.1294475
GRADE_FNA/Unkown                              0.5659750 0.29098687  1.1008320
SEX_FFemale                                   1.2017000 0.66676877  2.1657928
RACE_FBlack                                   0.5026035 0.29640646  0.8522429
INSURANCE_FMedicaid                           0.8585878 0.29777753  2.4755832
INSURANCE_FMedicare                           1.0917480 0.58072689  2.0524513
INSURANCE_FUnknown                            0.8154247 0.18610491  3.5728093
FACILITY_TYPE_FAcademic/Research Program      0.7603235 0.35447381  1.6308448
FACILITY_TYPE_FIntegrated Network Ca Program  0.4882528 0.20163764  1.1822731
FACILITY_LOCATION_FMiddle Atlantic            0.7707182 0.39920645  1.4879684
FACILITY_LOCATION_FSouth Atlantic             0.9960476 0.50675367  1.9577771
FACILITY_LOCATION_FEast North Central         0.9275004 0.40144129  2.1429212
FACILITY_LOCATION_FEast South Central         0.6944660 0.24206125  1.9924005
FACILITY_LOCATION_FWest North Central         0.6704918 0.29829177  1.5071124
FACILITY_LOCATION_FWest South Central         1.1473497 0.21694298  6.0680062
FACILITY_LOCATION_FMountain                   0.9189768 0.30841861  2.7382210
FACILITY_LOCATION_FPacific                    0.9460884 0.30791797  2.9068884
EDUCATION_F13 - 20.9%                         0.7476923 0.38954747  1.4351108
EDUCATION_F7 - 12.9%                          0.8794780 0.44670238  1.7315368
EDUCATION_FLess than 7%                       0.7373786 0.38425018  1.4150344
EXPN_GROUPPre-Expansion                       1.2328341 0.51021236  2.9789164
YEAR_OF_DIAGNOSIS2005                         0.8855733 0.21892623  3.5822118
YEAR_OF_DIAGNOSIS2006                         0.7262821 0.21030842  2.5081529
YEAR_OF_DIAGNOSIS2007                         0.9601645 0.25875129  3.5629420
YEAR_OF_DIAGNOSIS2008                         0.8576294 0.30518321  2.4101200
YEAR_OF_DIAGNOSIS2009                         1.4540755 0.44536149  4.7474592
YEAR_OF_DIAGNOSIS2010                         0.6317595 0.15052597  2.6515029
YEAR_OF_DIAGNOSIS2011                         0.7804593 0.17423972  3.4958549
YEAR_OF_DIAGNOSIS2013                         0.4272722 0.04776933  3.8217311
YEAR_OF_DIAGNOSIS2015                         1.1788359 0.36149635  3.8441721

Radiation

no_Ukns <- data %>%
  filter(RADIATION_YN != "Ukn") %>%
  droplevels() %>%
  mutate(RADIATION_YN = fct_recode(RADIATION_YN,
                                        "0" = "No",
                                        "1" = "Yes"))%>% 
  mutate(RADIATION_YN = as.integer(RADIATION_YN)) %>% 
  mutate(RADIATION_YN = RADIATION_YN - 1)
fit_rads <- glm(RADIATION_YN ~ AGE_F + PRIMARY_SITE + GRADE_F + SEX_F + RACE_F + INSURANCE_F +
                      FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS,
   data = no_Ukns)
summary(fit_rads)

Call:
glm(formula = RADIATION_YN ~ AGE_F + PRIMARY_SITE + GRADE_F + 
    SEX_F + RACE_F + INSURANCE_F + FACILITY_TYPE_F + FACILITY_LOCATION_F + 
    EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS, data = no_Ukns)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-0.40694  -0.16785  -0.00875   0.10872   0.49187  

Coefficients:
                                              Estimate Std. Error t value Pr(>|t|)
(Intercept)                                   0.604198   0.755476   0.800    0.436
AGE_F(54,64]                                 -0.148317   0.222495  -0.667    0.515
AGE_F(64,74]                                 -0.718233   0.418292  -1.717    0.107
AGE_F(74,100]                                -0.258984   0.441473  -0.587    0.566
PRIMARY_SITEC445                             -0.271343   0.601181  -0.451    0.658
PRIMARY_SITEC446                              0.263018   0.686271   0.383    0.707
PRIMARY_SITEC447                             -0.287635   0.534949  -0.538    0.599
PRIMARY_SITEC448                             -0.261377   0.488269  -0.535    0.600
PRIMARY_SITEC449                             -0.431886   0.500251  -0.863    0.402
GRADE_FNA/Unkown                             -0.225547   0.285367  -0.790    0.442
SEX_FFemale                                   0.056522   0.252672   0.224    0.826
RACE_FBlack                                  -0.342715   0.226515  -1.513    0.151
INSURANCE_FMedicaid                           0.191840   0.454232   0.422    0.679
INSURANCE_FMedicare                           0.191669   0.270776   0.708    0.490
INSURANCE_FUnknown                            0.031174   0.633728   0.049    0.961
FACILITY_TYPE_FAcademic/Research Program      0.071253   0.327335   0.218    0.831
FACILITY_TYPE_FIntegrated Network Ca Program -0.353805   0.379345  -0.933    0.366
FACILITY_LOCATION_FMiddle Atlantic           -0.369969   0.282181  -1.311    0.210
FACILITY_LOCATION_FSouth Atlantic             0.002143   0.289871   0.007    0.994
FACILITY_LOCATION_FEast North Central        -0.391668   0.359215  -1.090    0.293
FACILITY_LOCATION_FEast South Central        -0.642847   0.452091  -1.422    0.176
FACILITY_LOCATION_FWest North Central        -0.470100   0.347422  -1.353    0.196
FACILITY_LOCATION_FWest South Central        -0.161010   0.714446  -0.225    0.825
FACILITY_LOCATION_FMountain                  -0.567683   0.468327  -1.212    0.244
FACILITY_LOCATION_FPacific                   -0.490935   0.481496  -1.020    0.324
EDUCATION_F13 - 20.9%                        -0.009606   0.279677  -0.034    0.973
EDUCATION_F7 - 12.9%                         -0.046867   0.290585  -0.161    0.874
EDUCATION_FLess than 7%                       0.083789   0.279592   0.300    0.769
EXPN_GROUPPre-Expansion                       0.353126   0.378437   0.933    0.366
YEAR_OF_DIAGNOSIS2005                         0.064228   0.599456   0.107    0.916
YEAR_OF_DIAGNOSIS2006                        -0.328018   0.531623  -0.617    0.546
YEAR_OF_DIAGNOSIS2007                        -0.019415   0.562454  -0.035    0.973
YEAR_OF_DIAGNOSIS2008                        -0.198592   0.443215  -0.448    0.661
YEAR_OF_DIAGNOSIS2009                        -0.057146   0.507549  -0.113    0.912
YEAR_OF_DIAGNOSIS2010                        -0.367531   0.615272  -0.597    0.559
YEAR_OF_DIAGNOSIS2011                         0.008894   0.643187   0.014    0.989
YEAR_OF_DIAGNOSIS2013                        -0.248602   0.939843  -0.265    0.795
YEAR_OF_DIAGNOSIS2015                         0.380001   0.507031   0.749    0.465

(Dispersion parameter for gaussian family taken to be 0.1752116)

    Null deviance: 6.0755  on 52  degrees of freedom
Residual deviance: 2.6282  on 15  degrees of freedom
  (33 observations deleted due to missingness)
AIC: 69.195

Number of Fisher Scoring iterations: 2
exp(cbind("Odds ratio" = coef(fit_rads), confint.default(fit_rads, level = 0.95)))
                                             Odds ratio     2.5 %   97.5 %
(Intercept)                                   1.8297836 0.4162338 8.043815
AGE_F(54,64]                                  0.8621574 0.5574408 1.333443
AGE_F(64,74]                                  0.4876133 0.2147953 1.106946
AGE_F(74,100]                                 0.7718355 0.3248945 1.833611
PRIMARY_SITEC445                              0.7623553 0.2346556 2.476760
PRIMARY_SITEC446                              1.3008497 0.3389005 4.993235
PRIMARY_SITEC447                              0.7500351 0.2628647 2.140085
PRIMARY_SITEC448                              0.7699909 0.2957132 2.004936
PRIMARY_SITEC449                              0.6492832 0.2435676 1.730807
GRADE_FNA/Unkown                              0.7980793 0.4561848 1.396212
SEX_FFemale                                   1.0581502 0.6448707 1.736289
RACE_FBlack                                   0.7098408 0.4553561 1.106549
INSURANCE_FMedicaid                           1.2114767 0.4973615 2.950924
INSURANCE_FMedicare                           1.2112700 0.7124528 2.059329
INSURANCE_FUnknown                            1.0316648 0.2979259 3.572473
FACILITY_TYPE_FAcademic/Research Program      1.0738527 0.5653492 2.039730
FACILITY_TYPE_FIntegrated Network Ca Program  0.7020120 0.3337683 1.476536
FACILITY_LOCATION_FMiddle Atlantic            0.6907555 0.3973115 1.200930
FACILITY_LOCATION_FSouth Atlantic             1.0021452 0.5677960 1.768760
FACILITY_LOCATION_FEast North Central         0.6759286 0.3342999 1.366676
FACILITY_LOCATION_FEast South Central         0.5257933 0.2167675 1.275369
FACILITY_LOCATION_FWest North Central         0.6249400 0.3163092 1.234710
FACILITY_LOCATION_FWest South Central         0.8512837 0.2098633 3.453124
FACILITY_LOCATION_FMountain                   0.5668372 0.2263692 1.419382
FACILITY_LOCATION_FPacific                    0.6120539 0.2381988 1.572678
EDUCATION_F13 - 20.9%                         0.9904401 0.5724884 1.713522
EDUCATION_F7 - 12.9%                          0.9542141 0.5398824 1.686524
EDUCATION_FLess than 7%                       1.0873997 0.6286372 1.880955
EXPN_GROUPPre-Expansion                       1.4235106 0.6780071 2.988733
YEAR_OF_DIAGNOSIS2005                         1.0663355 0.3293336 3.452643
YEAR_OF_DIAGNOSIS2006                         0.7203503 0.2541120 2.042031
YEAR_OF_DIAGNOSIS2007                         0.9807723 0.3256919 2.953449
YEAR_OF_DIAGNOSIS2008                         0.8198842 0.3439433 1.954421
YEAR_OF_DIAGNOSIS2009                         0.9444563 0.3492653 2.553926
YEAR_OF_DIAGNOSIS2010                         0.6924422 0.2073302 2.312620
YEAR_OF_DIAGNOSIS2011                         1.0089340 0.2860097 3.559138
YEAR_OF_DIAGNOSIS2013                         0.7798901 0.1236055 4.920722
YEAR_OF_DIAGNOSIS2015                         1.4622858 0.5413113 3.950185

Immunotherapy

no_Ukns <- data %>%
  filter(IMMUNO_YN != "Ukn") %>%
  droplevels() %>%
  mutate(IMMUNO_YN = fct_recode(IMMUNO_YN,
                                        "0" = "No",
                                        "1" = "Yes"))%>% 
  mutate(IMMUNO_YN = as.integer(IMMUNO_YN)) %>% 
  mutate(IMMUNO_YN = IMMUNO_YN - 1)
fit_immuno <- glm(IMMUNO_YN ~ AGE_F + PRIMARY_SITE + GRADE_F + SEX_F + RACE_F + INSURANCE_F +
                      FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS,
   data = no_Ukns)
summary(fit_immuno)

Call:
glm(formula = IMMUNO_YN ~ AGE_F + PRIMARY_SITE + GRADE_F + SEX_F + 
    RACE_F + INSURANCE_F + FACILITY_TYPE_F + FACILITY_LOCATION_F + 
    EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS, data = no_Ukns)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-0.42930  -0.08007   0.00906   0.08007   0.34648  

Coefficients:
                                             Estimate Std. Error t value Pr(>|t|)   
(Intercept)                                   0.45793    0.43194   1.060  0.30585   
AGE_F(54,64]                                 -0.05740    0.12721  -0.451  0.65830   
AGE_F(64,74]                                 -0.56508    0.23916  -2.363  0.03207 * 
AGE_F(74,100]                                -0.13588    0.25241  -0.538  0.59824   
PRIMARY_SITEC445                              0.05963    0.34373   0.173  0.86460   
PRIMARY_SITEC446                              0.52423    0.39238   1.336  0.20146   
PRIMARY_SITEC447                             -0.14283    0.30586  -0.467  0.64722   
PRIMARY_SITEC448                             -0.03085    0.27917  -0.111  0.91347   
PRIMARY_SITEC449                              0.25052    0.28602   0.876  0.39491   
GRADE_FNA/Unkown                             -0.15044    0.16316  -0.922  0.37109   
SEX_FFemale                                  -0.07322    0.14447  -0.507  0.61966   
RACE_FBlack                                  -0.10012    0.12951  -0.773  0.45148   
INSURANCE_FNone                               0.47545    0.58105   0.818  0.42602   
INSURANCE_FMedicaid                          -0.14343    0.25971  -0.552  0.58890   
INSURANCE_FMedicare                           0.09517    0.15482   0.615  0.54793   
INSURANCE_FUnknown                           -0.36743    0.36234  -1.014  0.32663   
FACILITY_TYPE_FAcademic/Research Program      0.41737    0.18715   2.230  0.04144 * 
FACILITY_TYPE_FIntegrated Network Ca Program  0.02351    0.21689   0.108  0.91512   
FACILITY_LOCATION_FMiddle Atlantic           -0.43854    0.16134  -2.718  0.01587 * 
FACILITY_LOCATION_FSouth Atlantic             0.04140    0.16573   0.250  0.80612   
FACILITY_LOCATION_FEast North Central        -0.36071    0.20538  -1.756  0.09943 . 
FACILITY_LOCATION_FEast South Central        -0.23066    0.25848  -0.892  0.38630   
FACILITY_LOCATION_FWest North Central        -0.34459    0.19864  -1.735  0.10328   
FACILITY_LOCATION_FWest South Central        -0.81450    0.40849  -1.994  0.06467 . 
FACILITY_LOCATION_FMountain                  -0.30458    0.26777  -1.137  0.27318   
FACILITY_LOCATION_FPacific                   -0.84983    0.27530  -3.087  0.00751 **
EDUCATION_F13 - 20.9%                        -0.27240    0.15991  -1.703  0.10910   
EDUCATION_F7 - 12.9%                         -0.46211    0.16614  -2.781  0.01397 * 
EDUCATION_FLess than 7%                      -0.14858    0.15986  -0.929  0.36738   
EXPN_GROUPPre-Expansion                      -0.05811    0.21637  -0.269  0.79194   
YEAR_OF_DIAGNOSIS2005                        -0.35005    0.34274  -1.021  0.32329   
YEAR_OF_DIAGNOSIS2006                        -0.09693    0.30396  -0.319  0.75421   
YEAR_OF_DIAGNOSIS2007                         0.02192    0.32158   0.068  0.94655   
YEAR_OF_DIAGNOSIS2008                         0.11160    0.25341   0.440  0.66592   
YEAR_OF_DIAGNOSIS2009                         0.06434    0.29019   0.222  0.82754   
YEAR_OF_DIAGNOSIS2010                        -0.11559    0.35178  -0.329  0.74702   
YEAR_OF_DIAGNOSIS2011                         0.01424    0.36774   0.039  0.96962   
YEAR_OF_DIAGNOSIS2013                         0.15445    0.53736   0.287  0.77772   
YEAR_OF_DIAGNOSIS2015                        -0.21103    0.28990  -0.728  0.47786   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for gaussian family taken to be 0.05727668)

    Null deviance: 4.53704  on 53  degrees of freedom
Residual deviance: 0.85915  on 15  degrees of freedom
  (33 observations deleted due to missingness)
AIC: 9.6424

Number of Fisher Scoring iterations: 2
exp(cbind("Odds ratio" = coef(fit_immuno), confint.default(fit_immuno, level = 0.95)))
                                             Odds ratio     2.5 %    97.5 %
(Intercept)                                   1.5807952 0.6779593 3.6859344
AGE_F(54,64]                                  0.9442190 0.7358512 1.2115896
AGE_F(64,74]                                  0.5683168 0.3556459 0.9081617
AGE_F(74,100]                                 0.8729442 0.5322703 1.4316628
PRIMARY_SITEC445                              1.0614409 0.5411470 2.0819792
PRIMARY_SITEC446                              1.6891503 0.7828468 3.6446836
PRIMARY_SITEC447                              0.8668988 0.4760161 1.5787566
PRIMARY_SITEC448                              0.9696215 0.5610140 1.6758331
PRIMARY_SITEC449                              1.2846905 0.7333956 2.2503947
GRADE_FNA/Unkown                              0.8603279 0.6248597 1.1845283
SEX_FFemale                                   0.9294008 0.7002187 1.2335944
RACE_FBlack                                   0.9047252 0.7019034 1.1661543
INSURANCE_FNone                               1.6087408 0.5150996 5.0243626
INSURANCE_FMedicaid                           0.8663820 0.5207697 1.4413623
INSURANCE_FMedicare                           1.0998492 0.8119944 1.4897495
INSURANCE_FUnknown                            0.6925096 0.3404126 1.4087893
FACILITY_TYPE_FAcademic/Research Program      1.5179597 1.0518511 2.1906157
FACILITY_TYPE_FIntegrated Network Ca Program  1.0237885 0.6692555 1.5661328
FACILITY_LOCATION_FMiddle Atlantic            0.6449760 0.4701243 0.8848597
FACILITY_LOCATION_FSouth Atlantic             1.0422711 0.7531953 1.4422938
FACILITY_LOCATION_FEast North Central         0.6971790 0.4661470 1.0427154
FACILITY_LOCATION_FEast South Central         0.7940099 0.4784140 1.3177953
FACILITY_LOCATION_FWest North Central         0.7085102 0.4800252 1.0457509
FACILITY_LOCATION_FWest South Central         0.4428624 0.1988680 0.9862174
FACILITY_LOCATION_FMountain                   0.7374332 0.4363139 1.2463682
FACILITY_LOCATION_FPacific                    0.4274876 0.2492247 0.7332567
EDUCATION_F13 - 20.9%                         0.7615520 0.5566567 1.0418654
EDUCATION_F7 - 12.9%                          0.6299512 0.4548687 0.8724244
EDUCATION_FLess than 7%                       0.8619349 0.6300917 1.1790851
EXPN_GROUPPre-Expansion                       0.9435500 0.6174312 1.4419204
YEAR_OF_DIAGNOSIS2005                         0.7046517 0.3599430 1.3794797
YEAR_OF_DIAGNOSIS2006                         0.9076231 0.5002387 1.6467732
YEAR_OF_DIAGNOSIS2007                         1.0221665 0.5442382 1.9197922
YEAR_OF_DIAGNOSIS2008                         1.1180687 0.6804030 1.8372605
YEAR_OF_DIAGNOSIS2009                         1.0664504 0.6038497 1.8834431
YEAR_OF_DIAGNOSIS2010                         0.8908433 0.4470572 1.7751687
YEAR_OF_DIAGNOSIS2011                         1.0143429 0.4933567 2.0854923
YEAR_OF_DIAGNOSIS2013                         1.1670168 0.4070787 3.3456145
YEAR_OF_DIAGNOSIS2015                         0.8097525 0.4587676 1.4292620

Any Treatment

summary(fit_tx)

Call:
glm(formula = Tx_YN ~ AGE_F + GRADE_F + SEX_F + RACE_F + INSURANCE_F + 
    FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F + YEAR_OF_DIAGNOSIS, 
    data = no_Ukns)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-0.45799  -0.13361  -0.01202   0.14925   0.39744  

Coefficients:
                                             Estimate Std. Error t value Pr(>|t|)    
(Intercept)                                   2.27424    0.40729   5.584 1.53e-05 ***
AGE_F(54,64]                                 -0.05998    0.15781  -0.380 0.707705    
AGE_F(64,74]                                 -0.78672    0.31144  -2.526 0.019638 *  
AGE_F(74,100]                                -0.43440    0.25977  -1.672 0.109306    
GRADE_FNA/Unkown                             -0.55646    0.21282  -2.615 0.016187 *  
SEX_FFemale                                   0.27535    0.14743   1.868 0.075834 .  
RACE_FBlack                                  -0.64201    0.15120  -4.246 0.000361 ***
INSURANCE_FMedicaid                          -0.23785    0.30471  -0.781 0.443756    
INSURANCE_FMedicare                          -0.08488    0.17937  -0.473 0.640956    
INSURANCE_FUnknown                           -0.33162    0.37546  -0.883 0.387098    
FACILITY_TYPE_FAcademic/Research Program     -0.25342    0.20486  -1.237 0.229735    
FACILITY_TYPE_FIntegrated Network Ca Program -1.02253    0.25231  -4.053 0.000573 ***
FACILITY_LOCATION_FMiddle Atlantic           -0.54826    0.19398  -2.826 0.010114 *  
FACILITY_LOCATION_FSouth Atlantic             0.06924    0.20473   0.338 0.738580    
FACILITY_LOCATION_FEast North Central        -0.52293    0.23909  -2.187 0.040186 *  
FACILITY_LOCATION_FEast South Central        -0.71906    0.29082  -2.473 0.022045 *  
FACILITY_LOCATION_FWest North Central        -0.66799    0.24398  -2.738 0.012328 *  
FACILITY_LOCATION_FWest South Central        -0.33485    0.38436  -0.871 0.393497    
FACILITY_LOCATION_FMountain                  -0.57997    0.33930  -1.709 0.102129    
FACILITY_LOCATION_FPacific                   -0.17576    0.27394  -0.642 0.528065    
EDUCATION_F13 - 20.9%                        -0.45986    0.17247  -2.666 0.014448 *  
EDUCATION_F7 - 12.9%                          0.13357    0.20340   0.657 0.518514    
EDUCATION_FLess than 7%                      -0.19641    0.19935  -0.985 0.335711    
YEAR_OF_DIAGNOSIS2005                        -0.21050    0.32125  -0.655 0.519414    
YEAR_OF_DIAGNOSIS2006                        -0.86556    0.29413  -2.943 0.007773 ** 
YEAR_OF_DIAGNOSIS2007                        -0.74730    0.33090  -2.258 0.034688 *  
YEAR_OF_DIAGNOSIS2008                        -0.16055    0.28566  -0.562 0.580052    
YEAR_OF_DIAGNOSIS2009                         0.07102    0.32360   0.219 0.828415    
YEAR_OF_DIAGNOSIS2010                        -0.92394    0.35724  -2.586 0.017223 *  
YEAR_OF_DIAGNOSIS2011                        -0.99983    0.39351  -2.541 0.019021 *  
YEAR_OF_DIAGNOSIS2013                        -0.82151    0.48653  -1.688 0.106112    
YEAR_OF_DIAGNOSIS2015                        -0.11529    0.32633  -0.353 0.727388    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for gaussian family taken to be 0.1023929)

    Null deviance: 8.7170  on 52  degrees of freedom
Residual deviance: 2.1503  on 21  degrees of freedom
  (31 observations deleted due to missingness)
AIC: 46.558

Number of Fisher Scoring iterations: 2

Metastasis at Time of Diagnosis

fit_mets <- glm(mets_at_dx_F ~ AGE_F + PRIMARY_SITE + GRADE_F + SEX_F + RACE_F + INSURANCE_F +
                      FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS,
   data = data)
summary(fit_mets)

Call:
glm(formula = mets_at_dx_F ~ AGE_F + PRIMARY_SITE + GRADE_F + 
    SEX_F + RACE_F + INSURANCE_F + FACILITY_TYPE_F + FACILITY_LOCATION_F + 
    EDUCATION_F + EXPN_GROUP + YEAR_OF_DIAGNOSIS, data = data)

Deviance Residuals: 
   Min      1Q  Median      3Q     Max  
     0       0       0       0       0  

Coefficients:
                                             Estimate Std. Error t value Pr(>|t|)
(Intercept)                                         0          0      NA       NA
AGE_F(54,64]                                        0          0      NA       NA
AGE_F(64,74]                                        0          0      NA       NA
AGE_F(74,100]                                       0          0      NA       NA
PRIMARY_SITEC445                                    0          0      NA       NA
PRIMARY_SITEC446                                    0          0      NA       NA
PRIMARY_SITEC447                                    0          0      NA       NA
PRIMARY_SITEC448                                    0          0      NA       NA
PRIMARY_SITEC449                                    0          0      NA       NA
GRADE_FNA/Unkown                                    0          0      NA       NA
SEX_FFemale                                         0          0      NA       NA
RACE_FBlack                                         0          0      NA       NA
INSURANCE_FNone                                     0          0      NA       NA
INSURANCE_FMedicaid                                 0          0      NA       NA
INSURANCE_FMedicare                                 0          0      NA       NA
INSURANCE_FUnknown                                  0          0      NA       NA
FACILITY_TYPE_FAcademic/Research Program            0          0      NA       NA
FACILITY_TYPE_FIntegrated Network Ca Program        0          0      NA       NA
FACILITY_LOCATION_FMiddle Atlantic                  0          0      NA       NA
FACILITY_LOCATION_FSouth Atlantic                   0          0      NA       NA
FACILITY_LOCATION_FEast North Central               0          0      NA       NA
FACILITY_LOCATION_FEast South Central               0          0      NA       NA
FACILITY_LOCATION_FWest North Central               0          0      NA       NA
FACILITY_LOCATION_FWest South Central               0          0      NA       NA
FACILITY_LOCATION_FMountain                         0          0      NA       NA
FACILITY_LOCATION_FPacific                          0          0      NA       NA
EDUCATION_F13 - 20.9%                               0          0      NA       NA
EDUCATION_F7 - 12.9%                                0          0      NA       NA
EDUCATION_FLess than 7%                             0          0      NA       NA
EXPN_GROUPPre-Expansion                             0          0      NA       NA
YEAR_OF_DIAGNOSIS2005                               0          0      NA       NA
YEAR_OF_DIAGNOSIS2006                               0          0      NA       NA
YEAR_OF_DIAGNOSIS2007                               0          0      NA       NA
YEAR_OF_DIAGNOSIS2008                               0          0      NA       NA
YEAR_OF_DIAGNOSIS2009                               0          0      NA       NA
YEAR_OF_DIAGNOSIS2010                               0          0      NA       NA
YEAR_OF_DIAGNOSIS2011                               0          0      NA       NA
YEAR_OF_DIAGNOSIS2013                               0          0      NA       NA
YEAR_OF_DIAGNOSIS2015                               0          0      NA       NA

(Dispersion parameter for gaussian family taken to be 0)

    Null deviance: 0  on 53  degrees of freedom
Residual deviance: 0  on 15  degrees of freedom
  (33 observations deleted due to missingness)
AIC: -Inf

Number of Fisher Scoring iterations: 1
exp(cbind("Odds ratio" = coef(fit_mets), confint.default(fit_mets, level = 0.95)))
                                             Odds ratio 2.5 % 97.5 %
(Intercept)                                           1     1      1
AGE_F(54,64]                                          1     1      1
AGE_F(64,74]                                          1     1      1
AGE_F(74,100]                                         1     1      1
PRIMARY_SITEC445                                      1     1      1
PRIMARY_SITEC446                                      1     1      1
PRIMARY_SITEC447                                      1     1      1
PRIMARY_SITEC448                                      1     1      1
PRIMARY_SITEC449                                      1     1      1
GRADE_FNA/Unkown                                      1     1      1
SEX_FFemale                                           1     1      1
RACE_FBlack                                           1     1      1
INSURANCE_FNone                                       1     1      1
INSURANCE_FMedicaid                                   1     1      1
INSURANCE_FMedicare                                   1     1      1
INSURANCE_FUnknown                                    1     1      1
FACILITY_TYPE_FAcademic/Research Program              1     1      1
FACILITY_TYPE_FIntegrated Network Ca Program          1     1      1
FACILITY_LOCATION_FMiddle Atlantic                    1     1      1
FACILITY_LOCATION_FSouth Atlantic                     1     1      1
FACILITY_LOCATION_FEast North Central                 1     1      1
FACILITY_LOCATION_FEast South Central                 1     1      1
FACILITY_LOCATION_FWest North Central                 1     1      1
FACILITY_LOCATION_FWest South Central                 1     1      1
FACILITY_LOCATION_FMountain                           1     1      1
FACILITY_LOCATION_FPacific                            1     1      1
EDUCATION_F13 - 20.9%                                 1     1      1
EDUCATION_F7 - 12.9%                                  1     1      1
EDUCATION_FLess than 7%                               1     1      1
EXPN_GROUPPre-Expansion                               1     1      1
YEAR_OF_DIAGNOSIS2005                                 1     1      1
YEAR_OF_DIAGNOSIS2006                                 1     1      1
YEAR_OF_DIAGNOSIS2007                                 1     1      1
YEAR_OF_DIAGNOSIS2008                                 1     1      1
YEAR_OF_DIAGNOSIS2009                                 1     1      1
YEAR_OF_DIAGNOSIS2010                                 1     1      1
YEAR_OF_DIAGNOSIS2011                                 1     1      1
YEAR_OF_DIAGNOSIS2013                                 1     1      1
YEAR_OF_DIAGNOSIS2015                                 1     1      1
LS0tCnRpdGxlOiAiU3ViY3V0YW5lb3VzIFBhbm5pY3VsaXRpcy1saWtlIFQtY2VsbCBMeW1waG9tYSBBbmFseXNpcyIKYXV0aG9yOiAiUmFtaWUgRmF0aHkiCmRhdGU6ICIxMi8xNi8yMDE5IgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRoZW1lOiB1bml0ZWQKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwotLS0KCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQoKbGlicmFyeSgiZ2dwbG90MiIpCmxpYnJhcnkoImRwbHlyIikKbGlicmFyeSgidGlkeXIiKQpsaWJyYXJ5KCJrbml0ciIpCmxpYnJhcnkoInRhYmxlb25lIikKbGlicmFyeSgiZm9yY2F0cyIpCmxpYnJhcnkoInN1cnZpdmFsIikKbGlicmFyeSgibnBzdXJ2IikKbGlicmFyeSgiYnJvb20iKQpsaWJyYXJ5KCJ0aWJibGUiKQpsaWJyYXJ5KCJyZWFkciIpCmxpYnJhcnkoInN1cnZtaW5lciIpCmxpYnJhcnkoInN0cmluZ3IiKQoKCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvPVRSVUUsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9VFJVRSkKJyUhaW4lJyA8LSBmdW5jdGlvbih4LHkpISgnJWluJScoeCx5KSkKYGBgCgpgYGB7cn0KcF90YWJsZSA8LSBmdW5jdGlvbih0YWJfZGF0YSwgLi4uKSB7CiAgdGFiX2RhdGFfMiA8LSBkZXBhcnNlKHN1YnN0aXR1dGUodGFiX2RhdGEpKQogIAogIHRhYmxlX3AgPC0gZG8uY2FsbChDcmVhdGVUYWJsZU9uZSwgCiAgICAgICAgICAgICAgICAgICAgIGxpc3QoZGF0YSA9IGFzLm5hbWUodGFiX2RhdGFfMiksIGluY2x1ZGVOQSA9IFRSVUUsIC4uLikpCiAgdGFibGVfcF9vdXQgPC0gcHJpbnQodGFibGVfcCwKICAgICAgICAgICAgICAgICAgICAgICBzaG93QWxsTGV2ZWxzID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICBwcmludFRvZ2dsZSA9IEZBTFNFKQogIGthYmxlKHRhYmxlX3Bfb3V0LAogICAgICAgIGFsaWduID0gImMiKQp9CmBgYAoKYGBge3J9CnVuaV92YXIgPC0gZnVuY3Rpb24odGVzdF92YXIsIGRhdGFfaW1wKSB7CgogICAgICAgICAgICAgICAgCiAgICAgICAgY2F0KCJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIiAgIFxuIyMiLCB0ZXN0X3ZhcikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18iKQogICAgICAgIGNhdCgiXG4iKQoKICAgICAgICAKICAgICAgICBmIDwtIGFzLmZvcm11bGEocGFzdGUoIlN1cnYoRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTLCBQVUZfVklUQUxfU1RBVFVTID09IDApIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMubmFtZSh0ZXN0X3ZhciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcCA9ICIgfiAiICkpCiAgICAgICAgCiAgICAgICAgZGF0YV9pbXBfMiA8LSBkZXBhcnNlKHN1YnN0aXR1dGUoZGF0YV9pbXApKQoKICAgICAgICBrbV9maXQgPC0gZG8uY2FsbCgic3VydmZpdCIsIGxpc3QoZm9ybXVsYSA9IGYsIGRhdGEgPSBhcy5uYW1lKGRhdGFfaW1wXzIpKSkKCiAgICAgICAgcHJpbnQoa21fZml0KQogICAgICAgIGNhdCgiXG4iKQoKICAgICAgICBwcmludChzdW1tYXJ5KGttX2ZpdCwgdGltZXMgPSBjKDEyLCAyNCwgMzYsIDQ4LCA2MCwgMTIwKSkpCiAgICAgICAgY2F0KCJcbiIpCgoKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIiAgIFxuIyMgVW5pdmFyaWFibGUgQ294IFByb3BvcnRpb25hbCBIYXphcmQgTW9kZWwgZm9yOiAiLCB0ZXN0X3ZhcikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIlxuIikKCgogICAgICAgIG5fbGV2ZWxzIDwtIG5sZXZlbHMoZGF0YV9pbXBbW3Rlc3RfdmFyXV0pCgogICAgICAgIGlmKG5fbGV2ZWxzID09IDEpewogICAgICAgICAgICAgICAgcHJpbnQoIk9ubHkgb25lIGxldmVsLCBubyBDb3ggbW9kZWwgcGVyZm9ybWVkIikKICAgICAgICAgICAgICAgIGNhdCgiXG4iKQoKICAgICAgICB9IGVsc2UgewoKCiAgICAgICAgICAgICAgICBjb3hfZml0IDwtIGRvLmNhbGwoImNveHBoIiwgbGlzdChmb3JtdWxhID0gZiwgZGF0YSA9IGFzLm5hbWUoZGF0YV9pbXBfMikpKQoKICAgICAgICAgICAgICAgIHByaW50KHN1bW1hcnkoY294X2ZpdCkpCiAgICAgICAgICAgICAgICBjYXQoIlxuIikKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZG8uY2FsbCgiZ2dmb3Jlc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChtb2RlbCA9IGNveF9maXQsIGRhdGEgPSBhcy5uYW1lKGRhdGFfaW1wXzIpKSkKCgogICAgICAgIH0KCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCJcbiIpCiAgICAgICAgY2F0KCIgICBcbiMjIFVuYWRqdXN0ZWQgS2FwbGFuIE1laWVyIE92ZXJhbGwgU3Vydml2YWwgQ3VydmUgZm9yOiAiLCB0ZXN0X3ZhcikKCgogICAgICAgIHAgPC0gZG8uY2FsbCgiZ2dzdXJ2cGxvdCIsCiAgICAgICAgICAgICAgICAgICAgIGxpc3QoZml0ID0ga21fZml0LCBkYXRhID0gYXMubmFtZShkYXRhX2ltcF8yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gImpjbyIsIGNlbnNvciA9IEZBTFNFLCBsZWdlbmQgPSAicmlnaHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmV0eXBlID0gInN0cmF0YSIsIHhsYWIgPSAiVGltZSAoTW9udGhzKSIpKQoKICAgICAgICBwcmludChwKQoKfQoKYGBgCgpgYGB7ciBjaHVuazIsIGNhY2hlPVRSVUUsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIHJlc3VsdHM9J2hpZGUnfQpjb2wud2lkdGggPC0gYygzNywgMTAsIDEsIDEsIDMsIDEsIDIsIDEsIDIsIDEsIDEsIDEsIDEsIDEsIDEsIDgsIDIsIDIsIDIsIDQsIDQsIDEsIDQsIDEsIDEsCiAgICAgICAgICAgICAgIDEsIDMsIDIsIDIsIDgsIDIsIDUsIDUsIDUsIDQsIDUsIDUsIDUsNCwgMiwgMSwgMiwgMSwgMywgMSwgMSwgMSwgMSwgMSwgMSwgMywKICAgICAgICAgICAgICAgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgNiwgOCwKICAgICAgICAgICAgICAgOCwgOCwgMiwgMSwgMSwgMSwgMSwgOCwgMSwgMSwgOCwgMSwgMSwgMiwgMiwgNSwgMiwgNSwgMywgMSwgMywgMSwgOCwgOCwgMiwgOCwKICAgICAgICAgICAgICAgMiwgOCwgMiwgMiwgMSwgOCwgMSwgMSwgMSwgMSwgMSwgOCwgMSwgMiwgMiwgMiwgMiwgMiwgMSwgMSwgMSwgMiwgMSwgMywgMSwgMSwKICAgICAgICAgICAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSkKCmNvbC5uYW1lcy5hYnIgPC0gYygiUFVGX0NBU0VfSUQiLCAiUFVGX0ZBQ0lMSVRZX0lEIiwgIkZBQ0lMSVRZX1RZUEVfQ0QiLCAiRkFDSUxJVFlfTE9DQVRJT05fQ0QiLAogICAgICAgICAgICAgICAgICAgIkFHRSIsICJTRVgiLCAiUkFDRSIsICJTUEFOSVNIX0hJU1BBTklDX09SSUdJTiIsICJJTlNVUkFOQ0VfU1RBVFVTIiwKICAgICAgICAgICAgICAgICAgICJNRURfSU5DX1FVQVJfMDAiLCAiTk9fSFNEX1FVQVJfMDAiLCAiVVJfQ0RfMDMiLCAiTUVEX0lOQ19RVUFSXzEyIiwgIk5PX0hTRF9RVUFSXzEyIiwKICAgICAgICAgICAgICAgICAgICJVUl9DRF8xMyIsICJDUk9XRkxZIiwgIkNEQ0NfVE9UQUxfQkVTVCIsICJTRVFVRU5DRV9OVU1CRVIiLCAiQ0xBU1NfT0ZfQ0FTRSIsCiAgICAgICAgICAgICAgICAgICAiWUVBUl9PRl9ESUFHTk9TSVMiLCAiUFJJTUFSWV9TSVRFIiwgIkxBVEVSQUxJVFkiLCAiSElTVE9MT0dZIiwgIkJFSEFWSU9SIiwgIkdSQURFIiwKICAgICAgICAgICAgICAgICAgICJESUFHTk9TVElDX0NPTkZJUk1BVElPTiIsICJUVU1PUl9TSVpFIiwgIlJFR0lPTkFMX05PREVTX1BPU0lUSVZFIiwKICAgICAgICAgICAgICAgICAgICJSRUdJT05BTF9OT0RFU19FWEFNSU5FRCIsICJEWF9TVEFHSU5HX1BST0NfREFZUyIsICJSWF9TVU1NX0RYU1RHX1BST0MiLCAiVE5NX0NMSU5fVCIsCiAgICAgICAgICAgICAgICAgICAiVE5NX0NMSU5fTiIsICJUTk1fQ0xJTl9NIiwgIlROTV9DTElOX1NUQUdFX0dST1VQIiwgIlROTV9QQVRIX1QiLCAiVE5NX1BBVEhfTiIsICJUTk1fUEFUSF9NIiwKICAgICAgICAgICAgICAgICAgICJUTk1fUEFUSF9TVEFHRV9HUk9VUCIsICJUTk1fRURJVElPTl9OVU1CRVIiLCAiQU5BTFlUSUNfU1RBR0VfR1JPVVAiLCAiQ1NfTUVUU19BVF9EWCIsCiAgICAgICAgICAgICAgICAgICAiQ1NfTUVUU19FVkFMIiwgIkNTX0VYVEVOU0lPTiIsICJDU19UVU1PUl9TSVpFRVhUX0VWQUwiLCAiQ1NfTUVUU19EWF9CT05FIiwgIkNTX01FVFNfRFhfQlJBSU4iLAogICAgICAgICAgICAgICAgICAgIkNTX01FVFNfRFhfTElWRVIiLCAiQ1NfTUVUU19EWF9MVU5HIiwgIkxZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMSIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMyIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzQiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfNSIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzYiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl83IiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzgiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl85IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTAiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTEiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xMiIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzEzIiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzE0IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTUiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xNiIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xNyIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzE4IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTkiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMjAiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yMSIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzIyIiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzIzIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMjQiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yNSIsCiAgICAgICAgICAgICAgICAgICAiQ1NfVkVSU0lPTl9MQVRFU1QiLCAiRFhfUlhfU1RBUlRFRF9EQVlTIiwgIkRYX1NVUkdfU1RBUlRFRF9EQVlTIiwgIkRYX0RFRlNVUkdfU1RBUlRFRF9EQVlTIiwKICAgICAgICAgICAgICAgICAgICJSWF9TVU1NX1NVUkdfUFJJTV9TSVRFIiwgIlJYX0hPU1BfU1VSR19BUFBSXzIwMTAiLCAiUlhfU1VNTV9TVVJHSUNBTF9NQVJHSU5TIiwKICAgICAgICAgICAgICAgICAgICJSWF9TVU1NX1NDT1BFX1JFR19MTl9TVVIiLCAiUlhfU1VNTV9TVVJHX09USF9SRUdESVMiLCAiU1VSR19ESVNDSEFSR0VfREFZUyIsICJSRUFETV9IT1NQXzMwX0RBWVMiLAogICAgICAgICAgICAgICAgICAgIlJFQVNPTl9GT1JfTk9fU1VSR0VSWSIsICJEWF9SQURfU1RBUlRFRF9EQVlTIiwgIlJYX1NVTU1fUkFESUFUSU9OIiwgIlJBRF9MT0NBVElPTl9PRl9SWCIsCiAgICAgICAgICAgICAgICAgICAiUkFEX1RSRUFUX1ZPTCIsICJSQURfUkVHSU9OQUxfUlhfTU9EQUxJVFkiLCAiUkFEX1JFR0lPTkFMX0RPU0VfQ0dZIiwgIlJBRF9CT09TVF9SWF9NT0RBTElUWSIsCiAgICAgICAgICAgICAgICAgICAiUkFEX0JPT1NUX0RPU0VfQ0dZIiwgIlJBRF9OVU1fVFJFQVRfVk9MIiwgIlJYX1NVTU1fU1VSR1JBRF9TRVEiLCAiUkFEX0VMQVBTRURfUlhfREFZUyIsCiAgICAgICAgICAgICAgICAgICAiUkVBU09OX0ZPUl9OT19SQURJQVRJT04iLCAiRFhfU1lTVEVNSUNfU1RBUlRFRF9EQVlTIiwgIkRYX0NIRU1PX1NUQVJURURfREFZUyIsICJSWF9TVU1NX0NIRU1PIiwKICAgICAgICAgICAgICAgICAgICJEWF9IT1JNT05FX1NUQVJURURfREFZUyIsICJSWF9TVU1NX0hPUk1PTkUiLCAiRFhfSU1NVU5PX1NUQVJURURfREFZUyIsICJSWF9TVU1NX0lNTVVOT1RIRVJBUFkiLAogICAgICAgICAgICAgICAgICAgIlJYX1NVTU1fVFJOU1BMTlRfRU5ETyIsICJSWF9TVU1NX1NZU1RFTUlDX1NVUl9TRVEiLCAiRFhfT1RIRVJfU1RBUlRFRF9EQVlTIiwgIlJYX1NVTU1fT1RIRVIiLAogICAgICAgICAgICAgICAgICAgIlBBTExJQVRJVkVfQ0FSRSIsICJSWF9TVU1NX1RSRUFUTUVOVF9TVEFUVVMiLCAiUFVGXzMwX0RBWV9NT1JUX0NEIiwgIlBVRl85MF9EQVlfTU9SVF9DRCIsCiAgICAgICAgICAgICAgICAgICAiRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTIiwgIlBVRl9WSVRBTF9TVEFUVVMiLCAiUlhfSE9TUF9TVVJHX1BSSU1fU0lURSIsICJSWF9IT1NQX0NIRU1PIiwKICAgICAgICAgICAgICAgICAgICJSWF9IT1NQX0lNTVVOT1RIRVJBUFkiLCAiUlhfSE9TUF9IT1JNT05FIiwgIlJYX0hPU1BfT1RIRVIiLCAiUFVGX01VTFRfU09VUkNFIiwgIlJFRkVSRU5DRV9EQVRFX0ZMQUciLAogICAgICAgICAgICAgICAgICAgIlJYX1NVTU1fU0NPUEVfUkVHX0xOXzIwMTIiLCAiUlhfSE9TUF9EWFNUR19QUk9DIiwgIlBBTExJQVRJVkVfQ0FSRV9IT1NQIiwgIlRVTU9SX1NJWkVfU1VNTUFSWSIsCiAgICAgICAgICAgICAgICAgICAiTUVUU19BVF9EWF9PVEhFUiIsICJNRVRTX0FUX0RYX0RJU1RBTlRfTE4iLCAiTUVUU19BVF9EWF9CT05FIiwgIk1FVFNfQVRfRFhfQlJBSU4iLAogICAgICAgICAgICAgICAgICAgIk1FVFNfQVRfRFhfTElWRVIiLCAiTUVUU19BVF9EWF9MVU5HIiwgIk5PX0hTRF9RVUFSXzE2IiwgIk1FRF9JTkNfUVVBUl8xNiIsICJNRURJQ0FJRF9FWFBOX0NPREUiKQoKCgojUmVhZCBpbiBkYXRhIGZvciBlYWNoIHN1YnNpdGUKbGlwIDwtIHJlYWRfZndmKCdOQ0RCUFVGX0xpcC4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgptZWxhbm9tYSA8LSByZWFkX2Z3ZignTkNEQlBVRl9NZWxhbm9tYS4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgCnNraW4gPC0gcmVhZF9md2YoJ05DREJQVUZfT3RTa2luLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCmhvZGdleHRyIDwtIHJlYWRfZndmKCdOQ0RCUFVGX0hvZGdFeHRyLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCmhvZGduZGFsIDwtIHJlYWRfZndmKCdOQ0RCUFVGX0hvZGdOZGFsLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCk5ITG5kYWwgPC0gcmVhZF9md2YoJ05DREJQVUZfTkhMTmRhbC4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgpOSExleHRyIDwtIHJlYWRfZndmKCdOQ0RCUFVGX05ITEV4dHIuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKCmJyZWFzdCA8LSAgcmVhZF9md2YoJ05DREJQVUZfQnJlYXN0LjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCnZ1bHZhIDwtICByZWFkX2Z3ZignTkNEQlBVRl9WdWx2YS4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgp2YWdpbmEgPC0gIHJlYWRfZndmKCdOQ0RCUFVGX1ZhZ2luYS4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgpwZW5pcyA8LSAgcmVhZF9md2YoJ05DREJQVUZfUGVuaXMuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKb3RsZXVrIDwtIHJlYWRfZndmKCdOQ0RCUFVGX090TGV1ay4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCiAgCm90aGVyYWN1dGVsZXVrICA8LSByZWFkX2Z3ZignTkNEQlBVRl9PdEFjTGV1ay4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCiAgCkFMTCAgPC0gcmVhZF9md2YoJ05DREJQVUZfQUx5bUxldWsuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKCiNDb21iaW5lIGRhdGEgZm9yIGFsbCBzdWJzaXRlcwpkYXQgPC0gYmluZF9yb3dzKGxpcCwgbWVsYW5vbWEsIHNraW4sIGhvZGdleHRyLCBob2RnbmRhbCwgTkhMbmRhbCwgYnJlYXN0LCAKICAgICAgICAgICAgICAgICB2dWx2YSwgdmFnaW5hLCBwZW5pcywgTkhMZXh0ciwgb3RsZXVrLCBvdGhlcmFjdXRlbGV1aywgQUxMKQoKcm0obGlwLCBtZWxhbm9tYSwgc2tpbiwgaG9kZ2V4dHIsIGhvZGduZGFsLCBOSExuZGFsLCBicmVhc3QsIHZ1bHZhLCB2YWdpbmEsIAogICBwZW5pcywgTkhMZXh0ciwgb3RsZXVrLCBvdGhlcmFjdXRlbGV1aywgQUxMKQoKcHJpbV9zaXRlX3RleHQgPC0gZGF0YV9mcmFtZShQUklNQVJZX1NJVEUgPSBjKAojTkhMIHNpdGVzCiJDMDAwIiwgCiJDMDAxIiwgCiJDMDAyIiwgCiJDMDAzIiwgCiJDMDA0IiwgCiJDMDA1IiwgCiJDMDA2IiwgCiJDMDA4IiwKIkMwMDkiLCAKIkMwMTkiLCAKIkMwMjAiLCAKIkMwMjEiLAoiQzAyMiIsIAoiQzAyMyIsIAoiQzAyNCIsIAoiQzAyOCIsIAoiQzAyOSIsCiJDMDMwIiwKIkMwMzEiLAoiQzAzOSIsIAoiQzA0MCIsIAoiQzA0MSIsIAoiQzA0OCIsCiJDMDQ5IiwgCiJDMDUwIiwgCiJDMDUxIiwgCiJDMDUyIiwgCiJDMDU4IiwgCiJDMDU5IiwKIkMwNjAiLCAKIkMwNjEiLCAKIkMwNjIiLCAKIkMwNjgiLCAKIkMwNjkiLCAKIkMwNzkiLCAgCiJDMDk4IiwKIkMwOTkiLAoiQzExMSIsCiJDMTQyIiwKIkMzMDAiLAoiQzM3OSIsCiJDNDIwIiwKIkM0MjIiLAoiQzQyNCIsCgojc2tpbi9tZWxhbm9tYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQzQ0MCIsICJDNDQxIiwgIkM0NDIiLCAiQzQ0MyIsICJDNDQ0IiwgIkM0NDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQzQ0NiIsICJDNDQ3IiwgIkM0NDgiLCAiQzQ0OSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYnJlYXN0IC0gbmlwcGxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNTAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN2YWdpbmEvdnVsdmEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkM1MTAiLCAiQzUxMSIsICJDNTEyIiwgIkM1MTgiLCAiQzUxOSIsICJDNTI5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNwZW5pcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQzYwMCIsICJDNjAxIiwgIkM2MDIiLCAiQzYwOCIsICJDNjA5IiwgIkM2MzkiLAoKIkM3NzAiLAoiQzc3MSIsCiJDNzcyIiwKIkM3NzMiLAoiQzc3NCIsCiJDNzc1IiwKIkM3NzgiLAoiQzc3OSIpLAoKU0lURV9URVhUID0gYygKIkMwMC4wIEV4dGVybmFsIExpcDogVXBwZXIgTk9TIiwKIkMwMC4xIEV4dGVybmFsIExpcDogTG93ZXIgTk9TIiwKIkMwMC4yIEV4dGVybmFsIExpcDogTk9TIiwKIkMwMC4zIExpcDogVXBwZXIgTXVjb3NhIiwKIkMwMC40IExpcDogTG93ZXIgTXVjb3NhIiwKIkMwMC41IExpcDogTXVjb3NhIE5PUyIsCiJDMDAuNiBMaXA6IENvbW1pc3N1cmUiLAoiQzAwLjggTGlwOiBPdmVybGFwcGluZyIsCiJDMDAuOSBMaXAgTk9TIiwKIkMwMS45IFRvbmd1ZTogQmFzZSBOT1MiLAoiQzAyLjAgVG9uZ3VlOiBEb3JzYWwgTk9TIiwKIkMwMi4xIFRvbmd1ZTogQm9yZGVyLCBUaXAiLAoiQzAyLjIgVG9uZ3VlOiBWZW50cmFsIE5PUyIsCiJDMDIuMyBUb25ndWU6IEFudGVyaW9yIE5PUyIsCiJDMDIuNCBMaW5ndWFsIFRvbnNpbCIsCiJDMDIuOCBUb25ndWU6IE92ZXJsYXBwaW5nIiwKIkMwMi45IFRvbmd1ZTogTk9TIiwKIkMwMy4wIEd1bTogVXBwZXIiLAoiQzAzLjEgR3VtOiBMb3dlciIsCiJDMDMuOSBHdW0gTk9TIiwKIkMwNC4wIE1vdXRoOiBBbnRlcmlvciBGbG9vciIsCiJDMDQuMSBNb3V0aDogTGF0ZXJhbCBGbG9vciIsCiJDMDQuOCBNb3V0aDogT3ZlcmxhcHBpbmcgRmxvb3IiLAoiQzA0LjkgRmxvb3Igb2YgTW91dGggTk9TIiwKIkMwNS4wIEhhcmQgUGFsYXRlIiwKIkMwNS4xIFNvZnQgUGFsYXRlIE5PUyIsCiJDMDUuMiBVdnVsYSIsCiJDMDUuOCBQYWxhdGU6IE92ZXJsYXBwaW5nIiwKIkMwNS45IFBhbGF0ZSBOT1MiLAoiQzA2LjAgQ2hlZWsgTXVjb3NhIiwKIkMwNi4xIE1vdXRoOiBWZXN0aWJ1bGUiLAoiQzA2LjIgUmV0cm9tb2xhciBBcmVhIiwKIkMwNi44IE1vdXRoOiBPdGhlciBPdmVybGFwcGluZyIsCiJDMDYuOSBNb3V0aCBOT1MiLAoiQzA3LjkgUGFyb3RpZCBHbGFuZCIsCiAgIkMwOS44IFRvbnNpbDogT3ZlcmxhcHBpbmciLAogICJDMDkuOSBUb25zaWwgTk9TIiwKICAiQzExLjEgTmFzb3BoYXJ5bng6IFBvc3RlciBXYWxsIiwgCiAgIkMxNC4yIFdhbGRleWVyIFJpbmciLAogICJDMzAuMCBOYXNhbCBDYXZpdHkiLAogICJDMzcuOSBUaHltdXMiLAoiQzQyLjAgQmxvb2QiLAogICJDNDIuMiBTcGxlZW4iLAoiQzQyLjQgSGVtYXRvcG9pZXRpYyBOT1MiLAoKICNza2luCiJDNDQuMCBTa2luIG9mIGxpcCwgTk9TIiwKIkM0NC4xIEV5ZWxpZCIsCiJDNDQuMiBFeHRlcm5hbCBlYXIiLAoiQzQ0LjMgU2tpbiBvZiBlYXIgYW5kIHVuc3BlY2lmaWVkIHBhcnRzIG9mIGZhY2UiLAoiQzQ0LjQgU2tpbiBvZiBzY2FscCBhbmQgbmVjayIsCiJDNDQuNSBTa2luIG9mIHRydW5rIiwKIkM0NC42IFNraW4gb2YgdXBwZXIgbGltYiBhbmQgc2hvdWxkZXIiLAoiQzQ0LjcgU2tpbiBvZiBsb3dlciBsaW1iIGFuZCBoaXAiLAoiQzQ0LjggT3ZlcmxhcHBpbmcgbGVzaW9uIG9mIHNraW4iLAoiQzQ0LjkgU2tpbiwgTk9TIiwgCgojYnJlYXN0CiJDNTAuMCBOaXBwbGUiLAoKI3Z1bHZhL3ZhZ2luYQoiQzUxLjAgTGFiaXVtIG1hanVzIiwKIkM1MS4xIExhYml1bSBtaW51cyIsCiJDNTEuMiBDbGl0b3JpcyIsCiJDNTEuOCBPdmVybGFwcGluZyBsZXNpb24gb2YgdnVsdmEiLAoiQzUxLjkgVnVsdmEsIE5PUyIsCiJDNTIuOSBWYWdpbmEsIE5PUyIsCgojcGVuaXMKIkM2MC4wIFByZXB1Y2UiLAoiQzYwLjEgR2xhbnMgcGVuaXMiLAoiQzYwLjIgQm9keSBvZiBwZW5pcyIsCiJDNjAuOCBPdmVybGFwcGluZyBsZXNpb24gb2YgcGVuaXMiLAoiQzYwLjkgUGVuaXMiLAoiQzYzLjIgU2Nyb3R1bSwgTk9TIiwKCiAgIkM3Ny4wIEx5bXBoIE5vZGVzOiBIZWFkRmFjZU5lY2siLAogICJDNzcuMSBJbnRyYXRob3JhY2ljIEx5bXBoIE5vZGVzIiwKICAiQzc3LjIgSW50cmEtYWJkb21pbmFsIEx5bXBoTm9kZXMiLAogICJDNzcuMyBMeW1waCBOb2RlcyBvZiBheGlsbGEgb3IgYXJtICIsCiAgIkM3Ny40IEx5bXBoIE5vZGVzOiBMZWciLAogICJDNzcuNSBQZWx2aWMgTHltcGggTm9kZXMiLAogICJDNzcuOCBMeW1waCBOb2RlczogbXVsdGlwbGUgcmVnaW9uIiwKICAiQzc3LjkgTHltcGggTm9kZSBOT1MiKSkKCgpkYXQgPC0gbWVyZ2UoZGF0LCBwcmltX3NpdGVfdGV4dCwgYnkgPSAiUFJJTUFSWV9TSVRFIiwgYWxsLnggPSBUUlVFKSAKCnJtKHByaW1fc2l0ZV90ZXh0KQoKIyBjb252ZXJ0IG51bWVyaWMgdmFyaWFibGVzIGZyb20gY2hhcmFjdGVyIGNsYXNzIHRvIG51bWVyaWMgY2xhc3MKbnVtX3ZhcnMgPC0gYygiQUdFIiwgIkNST1dGTFkiLCAiVFVNT1JfU0laRSIsICJEWF9TVEFHSU5HX1BST0NfREFZUyIsICJEWF9SWF9TVEFSVEVEX0RBWVMiLCAiRFhfU1VSR19TVEFSVEVEX0RBWVMiLAogICAgICAgICAgICAgICJEWF9ERUZTVVJHX1NUQVJURURfREFZUyIsICJTVVJHX0RJU0NIQVJHRV9EQVlTIiwgIkRYX1JBRF9TVEFSVEVEX0RBWVMiLCAgIlJBRF9SRUdJT05BTF9ET1NFX0NHWSIsCiAgICAgICAgICAgICAgIlJBRF9CT09TVF9ET1NFX0NHWSIsICJSQURfRUxBUFNFRF9SWF9EQVlTIiwgIkRYX1NZU1RFTUlDX1NUQVJURURfREFZUyIsICJEWF9DSEVNT19TVEFSVEVEX0RBWVMiLCAKICAgICAgICAgICAgICAiRFhfSE9STU9ORV9TVEFSVEVEX0RBWVMiLCAiRFhfT1RIRVJfU1RBUlRFRF9EQVlTIiwgIkRYX0xBU1RDT05UQUNUX0RFQVRIX01PTlRIUyIsCiAgICAgICAgICAgICAgIlJBRF9OVU1fVFJFQVRfVk9MIikKCmRhdFtudW1fdmFyc10gPC0gbGFwcGx5KGRhdFtudW1fdmFyc10sIGFzLm51bWVyaWMpCgoKIyBjb252ZXJ0IGZhY3RvciB2YXJpYWJsZXMgZnJvbSBjaGFyYWN0ZXIgY2xhc3MgdG8gZmFjdG9yIGNsYXNzCnZhcnMgPC0gbmFtZXMoZGF0KQpmYWN0X3ZhcnMgPC0gdmFyc1shKHZhcnMgJWluJSBudW1fdmFycyldICMgYmFzaWNhbGx5IGFsbCBvZiB0aGUgbm9uLW51bWVyaWNzCgpkYXRbZmFjdF92YXJzXSA8LSBsYXBwbHkoZGF0W2ZhY3RfdmFyc10sIGFzLmNoYXJhY3RlcikKZGF0W2ZhY3RfdmFyc10gPC0gbGFwcGx5KGRhdFtmYWN0X3ZhcnNdLCBhcy5mYWN0b3IpCgpkYXQgPC0gZGF0ICU+JQogICAgICAgIG11dGF0ZShGQUNJTElUWV9UWVBFX0YgPSBmY3RfcmVjb2RlKEZBQ0lMSVRZX1RZUEVfQ0QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbW11bml0eSBDYW5jZXIgUHJvZ3JhbSIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbXByZWhlbnNpdmUgQ29tbSBDYSBQcm9ncmFtIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWNhZGVtaWMvUmVzZWFyY2ggUHJvZ3JhbSIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVncmF0ZWQgTmV0d29yayBDYSBQcm9ncmFtIiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3RoZXIiID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKEZBQ0lMSVRZX0xPQ0FUSU9OX0YgPSBmY3RfcmVjb2RlKEZBQ0lMSVRZX0xPQ0FUSU9OX0NELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZXcgRW5nbGFuZCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pZGRsZSBBdGxhbnRpYyIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvdXRoIEF0bGFudGljIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWFzdCBOb3J0aCBDZW50cmFsIiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWFzdCBTb3V0aCBDZW50cmFsIiA9ICI1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2VzdCBOb3J0aCBDZW50cmFsIiA9ICI2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2VzdCBTb3V0aCBDZW50cmFsIiA9ICI3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW91bnRhaW4iID0gIjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYWNpZmljIiA9ICI5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3V0IG9mIFVTIiA9ICIwIikpICU+JQogICAgICAgIG11dGF0ZShGQUNJTElUWV9HRU9HUkFQSFkgPSBmY3RfY29sbGFwc2UoRkFDSUxJVFlfTE9DQVRJT05fQ0QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9ydGhlYXN0IiA9IGMoIjEiLCAiMiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvdXRoIiA9IGMoIjMiLCAiNyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pZHdlc3QiID0gYygiNCIsICI1IiwgIjYiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXZXN0IiA9IGMoIjgiLCAiOSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKEFHRV9GID0gY3V0KEFHRSwgYygwLCA1NCwgNjQsIDc0LCAxMDApKSkgJT4lCiAgICAgICAgbXV0YXRlKEFHRV80MCA9IGN1dChBR0UsIGMoMCwgNDAsIDEwMCkpKSAlPiUKICAgICAgICBtdXRhdGUoU0VYX0YgPSBmY3RfcmVjb2RlKFNFWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWFsZSIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZlbWFsZSIgPSAiMiIpKSAlPiUKICAgICAgICBtdXRhdGUoUkFDRV9GID0gZmN0X2NvbGxhcHNlKFJBQ0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldoaXRlIiA9IGMoIjAxIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJsYWNrIiA9IGMoIjAyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFzaWFuIiA9IGMoIjA0IiwgIjA1IiwgIjA2IiwgIjA3IiwgIjA4IiwgIjEwIiwgIjExIiwgIjEyIiwgIjEzIiwgIjE0IiwgIjE1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMTYiLCAiMTciLCAiMjAiLCAiMjEiLCAiMjIiLCAiMjUiLCAiMjYiLCAiMjciLCAiMjgiLCAiMzAiLCAiMzEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIzMiIsICI5NiIsICI5NyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlci9VbmsiID0gYygiMDMiLCAiOTgiLCAiOTkiKSkpICU+JQogICAgICAgIG11dGF0ZShISVNQQU5JQyA9IGZjdF9jb2xsYXBzZShTUEFOSVNIX0hJU1BBTklDX09SSUdJTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIgPSBjKCIxIiwgIjIiLCAiMyIsICI0IiwgIjUiLCAiNiIsICI3IiwgIjgiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIiA9IGMoIjAiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gYygiOSIpKSkgJT4lCiAgICAgICAgbXV0YXRlKElOU1VSQU5DRV9GID0gZmN0X3JlY29kZShJTlNVUkFOQ0VfU1RBVFVTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHJpdmF0ZSIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1lZGljYWlkIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWVkaWNhcmUiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciBHb3Zlcm5tZW50IiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoSU5TVVJBTkNFX0YgPSBmY3RfcmVsZXZlbChJTlNVUkFOQ0VfRiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHJpdmF0ZSIpKSAlPiUKICAgICAgICBtdXRhdGUoSU5DT01FX0YgPSBmY3RfcmVjb2RlKE1FRF9JTkNfUVVBUl8xMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGVzcyB0aGFuICQzOCwwMDAiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkMzgsMDAwIC0gJDQ3LDk5OSIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiQ0OCwwMDAgLSAkNjIsOTk5IiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJDYzLDAwMCArIiA9ICI0IikpICU+JQogICAgICAgIG11dGF0ZShFRFVDQVRJT05fRiA9IGZjdF9yZWNvZGUoTk9fSFNEX1FVQVJfMTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMjElIG9yIG1vcmUiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEzIC0gMjAuOSUiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjcgLSAxMi45JSIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGVzcyB0aGFuIDclIiA9ICI0IikpICU+JQogICAgICAgIG11dGF0ZShVX1JfRiA9IGZjdF9jb2xsYXBzZShVUl9DRF8xMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1ldHJvIiA9IGMoIjEiLCAiMiIsICIzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVcmJhbiIgPSBjKCI0IiwgIjUiLCAiNiIsICI3IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSdXJhbCIgPSBjKCI4IiwgIjkiKSkpICU+JQogICAgICAgIG11dGF0ZShDTEFTU19PRl9DQVNFX0YgPSBmY3RfY29sbGFwc2UoQ0xBU1NfT0ZfQ0FTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbF9QYXJ0X1ByaW0gPSBjKCIxMCIsICIxMSIsICIxMiIsICIxMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMTQiLCAiMjAiLCAiMjEiLCAiMjIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyX0ZhY2lsaXR5ID0gYygiMDAiKSkpICU+JQogICAgICAgIG11dGF0ZShHUkFERV9GID0gZmN0X3JlY29kZShHUkFERSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHciBJOiBXZWxsIERpZmYiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdyIElJOiBNb2QgRGlmZiIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3IgSUlJOiBQb29yIERpZmYiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdyIElWOiBVbmRpZmYvQW5hcGxhc3RpYyIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTkEvVW5rb3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShISVNUT0xPR1lfRiA9IGZjdF9pbmZyZXEoSElTVE9MT0dZKSkgJT4lCiAgICAgICAgbXV0YXRlKEhJU1RPTE9HWV9GID0gZmFjdG9yKEhJU1RPTE9HWV9GKSkgJT4lCiAgICAgICAgbXV0YXRlKEhJU1RPTE9HWV9GX0xJTSA9IGZjdF9sdW1wKEhJU1RPTE9HWV9GLCBwcm9wID0gMC4wNSkpICU+JQogICAgICAgIG11dGF0ZShUTk1fQ0xJTl9UID0gZmN0X3JlY29kZShUTk1fQ0xJTl9ULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX0NMSU5fVCA9IGZjdF9yZWxldmVsKFROTV9DTElOX1QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMSIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX0NMSU5fTiA9IGZjdF9yZWNvZGUoVE5NX0NMSU5fTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9DTElOX00gPSBmY3RfcmVjb2RlKFROTV9DTElOX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fUEFUSF9UID0gZmN0X3JlY29kZShUTk1fUEFUSF9ULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX1BBVEhfVCA9IGZjdF9yZWxldmVsKFROTV9QQVRIX1QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMSIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX1BBVEhfTiA9IGZjdF9yZWNvZGUoVE5NX1BBVEhfTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9QQVRIX00gPSBmY3RfcmVjb2RlKFROTV9QQVRIX00sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fQ0xJTl9TVEFHRV9HUk9VUCA9IGZjdF9yZWNvZGUoVE5NX0NMSU5fU1RBR0VfR1JPVVAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fUEFUSF9TVEFHRV9HUk9VUCA9IGZjdF9yZWNvZGUoVE5NX1BBVEhfU1RBR0VfR1JPVVAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShNQVJHSU5TID0gZmN0X3JlY29kZShSWF9TVU1NX1NVUkdJQ0FMX01BUkdJTlMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBSZXNpZHVhbCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZXNpZHVhbCwgTk9TIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pY3Jvc2NvcGljIFJlc2lkIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1hY3Jvc2NvcGljIFJlc2lkIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vdCBldmFsdWFibGUiID0gIjciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gc3VyZyIgPSAiOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShNQVJHSU5TX1lOID0gZmN0X2NvbGxhcHNlKFJYX1NVTU1fU1VSR0lDQUxfTUFSR0lOUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVzIiA9IGMoIjEiLCAiMiIsICIzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIiA9IGMoIjAiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gc3VyZy9VbmsvTkEiID0gYygiNyIsICI4IiwgIjkiKSkpICU+JQogICAgICAgIG11dGF0ZShSRUFETV9IT1NQXzMwX0RBWVNfRiA9IGZjdF9yZWNvZGUoUkVBRE1fSE9TUF8zMF9EQVlTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vX1N1cmdfb3JfTm9fUmVhZG1pdCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5wbGFuX1JlYWRtaXRfU2FtZSIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGxhbl9SZWFkbWl0X1NhbWUiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBsYW5VbnBsYW5fU2FtZSIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiNCIpKSAlPiUKICAgICAgICBtdXRhdGUoUlhfU1VNTV9SQURJQVRJT05fRiA9IGZjdF9yZWNvZGUoUlhfU1VNTV9SQURJQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJlYW0gUmFkaWF0aW9uIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZGlvYWN0aXZlIEltcGxhbnRzIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZGlvaXNvdG9wZXMiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmVhbSArIEltcCBvciBJc290b3BlcyIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWRpYXRpb24sIE5PUyIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShQVUZfMzBfREFZX01PUlRfQ0RfRiA9IGZjdF9yZWNvZGUoUFVGXzMwX0RBWV9NT1JUX0NELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFsaXZlXzMwIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWFkXzMwIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShQVUZfOTBfREFZX01PUlRfQ0RfRiA9IGZjdF9yZWNvZGUoUFVGXzkwX0RBWV9NT1JUX0NELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFsaXZlXzkwIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWFkXzkwIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShMWU1QSF9WQVNDVUxBUl9JTlZBU0lPTl9GID0gZmN0X3JlY29kZShMWU1QSF9WQVNDVUxBUl9JTlZBU0lPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5lZ19MeW1waFZhc2NfSW52IiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBvc19MdW1waFZhc2NfSW52IiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShSWF9IT1NQX1NVUkdfQVBQUl8yMDEwX0YgPSBmY3RfcmVjb2RlKFJYX0hPU1BfU1VSR19BUFBSXzIwMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vX1N1cmciID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSb2JvdF9Bc3Npc3QiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSb2JvdF90b19PcGVuIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW5kb19MYXAiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbmRvX0xhcF90b19PcGVuIiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3Blbl9Vbmtub3duIiA9ICI1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoQWxsID0gIkFsbCIpICU+JQogICAgICAgIG11dGF0ZShBbGwgPSBmYWN0b3IoQWxsKSkgJT4lCiAgICAgICAgbXV0YXRlKFJFQVNPTl9GT1JfTk9fU1VSR0VSWV9GID0gZmN0X3JlY29kZShSRUFTT05fRk9SX05PX1NVUkdFUlksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyBwZXJmb3JtZWQiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgbm90IHJlY29tbWVuZGVkIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBzdXJnIGR1ZSB0byBwdCBmYWN0b3JzIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBzdXJnLCBwdCBkaWVkIiA9ICI1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHJlYywgbm90IGRvbmUiID0gIjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgcmVjLCBwdCByZWZ1c2VkIiA9ICI3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHJlYywgdW5rIGlmIGRvbmUiID0gIjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKFNVUkdFUllfWU4gPSBpZmVsc2UoUkVBU09OX0ZPUl9OT19TVVJHRVJZID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUkVBU09OX0ZPUl9OT19TVVJHRVJZID09ICI5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVrbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIpKSkgJT4lCiAgICAgICAgbXV0YXRlKFNVUkdfVEYgPSBjYXNlX3doZW4oU1VSR0VSWV9ZTiA9PSAiWWVzIiB+IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VSR0VSWV9ZTiA9PSAiTm8iIH4gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IE5BKSkgICU+JQogICAgICAgIG11dGF0ZShSRUFTT05fRk9SX05PX1JBRElBVElPTl9GID0gZmN0X3JlY29kZShSRUFTT05fRk9SX05PX1JBRElBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgcGVyZm9ybWVkIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgbm90IHJlY29tbWVuZGVkIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBSYWQgZHVlIHRvIHB0IGZhY3RvcnMiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFJhZCwgcHQgZGllZCIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHJlYywgbm90IGRvbmUiID0gIjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCByZWMsIHB0IHJlZnVzZWQiID0gIjciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCByZWMsIHVuayBpZiBkb25lIiA9ICI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShSQURJQVRJT05fWU4gPSBpZmVsc2UoUkVBU09OX0ZPUl9OT19SQURJQVRJT04gPT0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSRUFTT05fRk9SX05PX1JBRElBVElPTiA9PSAiOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iKSkpICU+JQogICAgICAgIG11dGF0ZShTVVJHUkFEX1NFUV9GID0gZmN0X3JlY29kZShSWF9TVU1NX1NVUkdSQURfU0VRLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSBvciBTdXJnIG9yIFJhZCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgYmVmb3JlIFN1cmciID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyBiZWZvcmUgUmFkIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCBiZWZvcmUgYW5kIGFmdGVyIFN1cmciID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50cmFvcCBSYWQiID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50cmFvcCBSYWQgcGx1cyBvdGhlciIgPSAiNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShTVVJHX1JBRF9TRVEgPSBpZmVsc2UoU1VSR0VSWV9ZTiA9PSAiWWVzIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgQWxvbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJBRElBVElPTl9ZTiA9PSAiWWVzIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgQWxvbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShTVVJHRVJZX1lOID09ICJObyIgJiBSQURJQVRJT05fWU4gPT0gIk5vIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gVHJlYXRtZW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCB0aGVuIFN1cmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHRoZW4gUmFkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgYmVmb3JlIGFuZCBhZnRlciBTdXJnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIikpKSkpKSkgJT4lCiAgICAgICAgbXV0YXRlKFNVUkdfUkFEX1NFUSA9IGZjdF9yZWxldmVsKFNVUkdfUkFEX1NFUSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgQWxvbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyB0aGVuIFJhZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgQWxvbmUiKSkgJT4lCiAgICAgICAgbXV0YXRlKENIRU1PX1lOID0gZmN0X2NvbGxhcHNlKFJYX1NVTU1fQ0hFTU8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIgPSBjKCIwMCIsICI4MiIsICI4NSIsICI4NiIsICI4NyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVzIiA9IGMoIjAxIiwgIjAyIiwgIjAzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVa24iID0gYygiODgiLCAiOTkiKSkpICU+JQogICAgICAgIG11dGF0ZShJTU1VTk9fWU4gPSBmY3RfY29sbGFwc2UoUlhfU1VNTV9JTU1VTk9USEVSQVBZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iID0gYygiMDAiLCAiODIiLCAiODUiLCAiODYiLCAiODciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIgPSBjKCIwMSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWtuIiA9IGMoIjg4IiwgIjk5IikpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR19SQURfU0VRX0MgPSBpZmVsc2UoU1VSR0VSWV9ZTiA9PSAiWWVzIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnLCBObyByYWQsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSQURJQVRJT05fWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCwgTm8gU3VyZywgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShTVVJHRVJZX1lOID09ICJObyIgJiBSQURJQVRJT05fWU4gPT0gIk5vIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFN1cmcsIE5vIFJhZCwgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMiIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCB0aGVuIFN1cmcsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIzIiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgdGhlbiBSYWQsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiNCIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIGJlZm9yZSBhbmQgYWZ0ZXIgU3VyZywgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShTVVJHRVJZX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcsIE5vIHJhZCwgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJBRElBVElPTl9ZTiA9PSAiWWVzIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkLCBObyBTdXJnLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFNVUkdFUllfWU4gPT0gIk5vIiAmIFJBRElBVElPTl9ZTiA9PSAiTm8iICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gU3VyZywgTm8gUmFkLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIyIiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHRoZW4gU3VyZywgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjMiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyB0aGVuIFJhZCwgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICI0IiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgYmVmb3JlIGFuZCBhZnRlciBTdXJnLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciIpKSkpKSkpKSkpKSkpICU+JQogICAgICAgIG11dGF0ZShTVVJHX1JBRF9TRVFfQyA9IGZjdF9pbmZyZXEoU1VSR19SQURfU0VRX0MpKSAlPiUKICAgICAgICBtdXRhdGUoVF9TSVpFID0gYXMubnVtZXJpYyhUVU1PUl9TSVpFKSkgJT4lCiAgICAgICAgbXV0YXRlKFRfU0laRSA9IGlmZWxzZShUX1NJWkUgPT0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gVHVtb3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPiAwICYgVF9TSVpFIDwgMTAgfCBUX1NJWkUgPT0gOTkxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPCAxIGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSAxMCAmIFRfU0laRSA8IDIwIHwgVF9TSVpFID09IDk5MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxLTIgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSAyMCAmIFRfU0laRSA8IDMwIHwgVF9TSVpFID09IDk5MywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMi0zIGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDMwICYgVF9TSVpFIDwgNDAgfCBUX1NJWkUgPT0gOTk0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMy00IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSA0MCAmIFRfU0laRSA8IDUwIHwgVF9TSVpFID09IDk5NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0LTUgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSA1MCAmIFRfU0laRSA8IDYwIHwgVF9TSVpFID09IDk5NiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNS02IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDYwICYgVF9TSVpFIDw9IDk4NyB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVF9TSVpFID09IDk4MCB8IFRfU0laRSA9PSA5ODkgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRfU0laRSA9PSA5OTcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIj42IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID09IDk4OCB8IFRfU0laRSA9PSA5OTksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOQV91bmsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWljcm9zY29waWMgZm9jdXMiKSkpKSkpKSkpKSAlPiUKICAgICAgICBtdXRhdGUoVF9TSVpFID0gZmFjdG9yKFRfU0laRSkpICU+JQogICAgICAgIG11dGF0ZShUX1NJWkUgPSBmY3RfcmVsZXZlbChUX1NJWkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gVHVtb3IiLCAiTWljcm9zY29waWMgZm9jdXMiLCAiPCAxIGNtIiwgIjEtMiBjbSIsICIyLTMgY20iLCAiMy00IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjQtNSBjbSIsICI1LTYgY20iLCAiPjYgY20iLCAiTkFfdW5rIikpICU+JQogICAgICAgIG11dGF0ZShtZXRzX2F0X2R4ID0gY2FzZV93aGVuKENTX01FVFNfRFhfTFVORyA9PSAiMSIgfiAiTHVuZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NfTUVUU19EWF9CT05FID09ICIxIiB+ICJCb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU19NRVRTX0RYX0JSQUlOID09ICIxIiB+ICJCcmFpbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NfTUVUU19EWF9MSVZFUiA9PSAiMSIgfiAiTGl2ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiAiTm9uZS9PdGhlci9VbmsvTkEiKSkgJT4lCiAgICAgICAgbXV0YXRlKE1FRElDQUlEX0VYUE5fQ09ERSA9IGZjdF9yZWNvZGUoTUVESUNBSURfRVhQTl9DT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb24tRXhwYW5zaW9uIFN0YXRlIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSmFuIDIwMTQgRXhwYW5zaW9uIFN0YXRlcyIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVhcmx5IEV4cGFuc2lvbiBTdGF0ZXMgKDIwMTAtMTMpIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGF0ZSBFeHBhbnNpb24gU3RhdGVzICg+IEphbiAyMDE0KSIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cHByZXNzZWQgZm9yIEFnZXMgMCAtIDM5IiA9ICI5IikpICAlPiUKICAgICAgICBtdXRhdGUoRVhQTl9HUk9VUCA9ICBjYXNlX3doZW4oTUVESUNBSURfRVhQTl9DT0RFICAlaW4lIGMoIkphbiAyMDE0IEV4cGFuc2lvbiBTdGF0ZXMiKSAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICVpbiUgYygiMjAxNCIsICIyMDE1IikgfiAiUG9zdC1FeHBhbnNpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICAlaW4lIGMoIkphbiAyMDE0IEV4cGFuc2lvbiBTdGF0ZXMiKSAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICVpbiUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIjIwMDQiLCAiMjAwNSIsICIyMDA2IiwgIjIwMDciLCAiMjAwOCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyMDA5IiwgIjIwMTAiLCAiMjAxMSIsICIyMDEyIiwgIjIwMTMiKSB+ICJQcmUtRXhwYW5zaW9uIiwKICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAgJWluJSBjKCJFYXJseSBFeHBhbnNpb24gU3RhdGVzICgyMDEwLTEzKSIpICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWUVBUl9PRl9ESUFHTk9TSVMgJWluJSBjKCIyMDEwIiwgIjIwMTEiLCAiMjAxMiIsICIyMDEzIiwgIjIwMTQiLCAiMjAxNSIpIH4gIlBvc3QtRXhwYW5zaW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgICVpbiUgYygiRWFybHkgRXhwYW5zaW9uIFN0YXRlcyAoMjAxMC0xMykiKSAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICVpbiUgYygiMjAwNCIsICIyMDA1IiwgIjIwMDYiLCAiMjAwNyIsICIyMDA4IiwgIjIwMDkiKSB+ICJQcmUtRXhwYW5zaW9uIiwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAlaW4lIGMoIk5vbi1FeHBhbnNpb24gU3RhdGUiKSB+ICJQcmUtRXhwYW5zaW9uIiwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAlaW4lIGMoIkxhdGUgRXhwYW5zaW9uIFN0YXRlcyAoPiBKYW4gMjAxNCkiKSB+ICJQcmUtRXhwYW5zaW9uIiwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICVpbiUgYygiTGF0ZSBFeHBhbnNpb24gU3RhdGVzICg+IEphbiAyMDE0KSIpICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZRUFSX09GX0RJQUdOT1NJUyAlaW4lIGMoIjIwMTQiLCAiMjAxNSIpIH4gIkV4Y2x1ZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFID09ICJTdXBwcmVzc2VkIGZvciBBZ2VzIDAgLSAzOSIgfiAiRXhjbHVkZSIpKSAlPiUKICAKICBtdXRhdGUocHJlXzIwMTQgPSBZRUFSX09GX0RJQUdOT1NJUyAlaW4lIGMoIjIwMDQiLCAiMjAwNSIsICIyMDA2IiwgIjIwMDciLCAiMjAwOCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyMDA5IiwgIjIwMTAiLCAiMjAxMSIsICIyMDEyIiwgIjIwMTMiKSkgJT4lCiAgCiAgbXV0YXRlKG1ldHNfYXRfZHhfRiA9IGlmZWxzZShtZXRzX2F0X2R4ID09ICJOb25lL090aGVyL1Vuay9OQSIsIEZBTFNFLCBUUlVFKSkgJT4lIAogIAogIG11dGF0ZShUeF9ZTiA9IGlmZWxzZShTVVJHX1JBRF9TRVEgPT0gIk5vIFRyZWF0bWVudCIgJiBDSEVNT19ZTiA9PSAiTm8iICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgSU1NVU5PX1lOID09ICJObyIsIEZBTFNFLCAKICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKENIRU1PX1lOID09ICJVa24iLCBOQSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKSkpCgpmYWN0X3ZhcnNfMiA8LSBjKCJGQUNJTElUWV9UWVBFX0YiLCAiRkFDSUxJVFlfTE9DQVRJT05fRiIsICJBR0VfRiIsICJTRVhfRiIsICJSQUNFX0YiLAogICAgICAgICAgICAgICAgICJISVNQQU5JQyIsICJJTlNVUkFOQ0VfRiIsICJJTkNPTUVfRiIsICJFRFVDQVRJT05fRiIsICJVX1JfRiIsCiAgICAgICAgICAgICAgICAgIkNEQ0NfVE9UQUxfQkVTVCIsICJDTEFTU19PRl9DQVNFX0YiLCAiWUVBUl9PRl9ESUFHTk9TSVMiLCAiUFJJTUFSWV9TSVRFIiwgIkhJU1RPTE9HWSIsCiAgICAgICAgICAgICAgICAgIkJFSEFWSU9SIiwgIkdSQURFX0YiLCAiVE5NX0NMSU5fVCIsICJUTk1fQ0xJTl9OIiwgIlROTV9DTElOX00iLAogICAgICAgICAgICAgICAgICJUTk1fQ0xJTl9TVEFHRV9HUk9VUCIsICJUTk1fUEFUSF9UIiwgIlROTV9QQVRIX04iLCAiVE5NX1BBVEhfTSIsICJUTk1fUEFUSF9TVEFHRV9HUk9VUCIsCiAgICAgICAgICAgICAgICAgIk1BUkdJTlMiLCAiUkVBRE1fSE9TUF8zMF9EQVlTX0YiLCAiUlhfU1VNTV9SQURJQVRJT05fRiIsICJQVUZfMzBfREFZX01PUlRfQ0RfRiIsCiAgICAgICAgICAgICAgICAgIlBVRl85MF9EQVlfTU9SVF9DRF9GIiwgIkxZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OX0YiLCAiUlhfSE9TUF9TVVJHX0FQUFJfMjAxMF9GIiwgIm1ldHNfYXRfZHgiKQoKCmRhdCA8LSBkYXQgJT4lCiAgICAgICAgbXV0YXRlX2F0KGZhY3RfdmFyc18yLCBmdW5zKGZhY3RvciguKSkpCgpgYGAKCgojIEV4dHJhY3QgRGF0YSBvZiBJbnRlcmVzdAoKYGBge3J9CgoKIyBOb24tSG9kZ2tpbiBMeW1waG9tYSBTaXRlcwpzaXRlX2NvZGUgPC0gYyggCiNhZGRpdGlvbmFsIHNpdGVzCgogI2xpcCAgCiAgIkMwMDAiLCAiQzAwMSIsICJDMDAyIiwgIkMwMDMiLCAiQzAwNCIsICJDMDA1IiwiQzAwNiIsICJDMDA4IiwiQzAwOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiNza2luL21lbGFub21hCiAgIkM0NDAiLCAiQzQ0MSIsICJDNDQyIiwgIkM0NDMiLCAiQzQ0NCIsICJDNDQ1IiwgIkM0NDYiLCAiQzQ0NyIsICJDNDQ4IiwgIkM0NDkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICNicmVhc3QgLSBuaXBwbGUKICAiQzUwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojdmFnaW5hL3Z1bHZhCiAgIkM1MTAiLCAiQzUxMSIsICJDNTEyIiwgIkM1MTgiLCAiQzUxOSIsICJDNTI5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiNwZW5pcwogIkM2MDAiLCAiQzYwMSIsICJDNjAyIiwgIkM2MDgiLCAiQzYwOSIsICJDNjM5IikKCiNteWNvc2lzIGZ1bmdvaWRlcywgU2V6YXJ5IHN5bmRyb21lLCBzdWJjdXRhbmVvdXMgcGFubmljdWxpdGlzLWxpa2UgVC1jZWxsIGx5bXBob21hLAojY3V0YW5lb3VzIFQtY2VsbCBseW1waG9tYSwgTk9TLCBwcmltYXJ5IGN1dGFuZW91cyBDRDMwK1QtY2VsbCBseW1waG9tYSwgCiNOSy9ULWNlbGwgbHltcGhvbWEsIHByaW1hcnkgY3V0YW5lb3VzIGdhbW1hLWRlbHRhIFQtY2VsbCBseW1waG9tYSwgCiNhbmQgYmxhc3RpYyBOSyBjZWxsIGx5bXBob21hLCByZXNwZWN0aXZlbHkKCiMiOTcwMCIgPSBNeWNvc2lzIEZ1bmdvaWRlcwogICMgcGFnZXRvaWQgcmV0aWN1bG9zaXMKCiMiOTcwMSIgPSBTZXphcnkgU3luZHJvbWUKICAjIFNlemFyeSBkaXNlYXNlCgojIjk3MDgiID0gU3ViY3V0YW5lb3VzIHBhbm5pY3VsaXRpc2xpa2UgVC1jZWxsIGx5bXBob21hCgojIjk3MDkiID0gQ3V0YW5lb3VzIFQtY2VsbCBseW1waG9tYSwgTk9TIAogICMgQ3V0YW5lb3VzIGx5bXBob21hLCBOT1MgKEM0NC5fKTsgUHJpbWFyeSBjdXRhbmVvdXMgQ0Q0LXBvc2l0aXZlIHNtYWxsL21lZGl1bQogICMgVC1jZWxsIGx5bXBob21hOyBQcmltYXJ5IGN1dGFuZW91cyBDRDgtcG9zaXRpdmUgYWdncmVzc2l2ZQogICMgZXBpZGVybW90cm9waWMgY3l0b3RveGljIFQtY2VsbCBseW1waG9tYQoKIyI5NzE4IiA9IFByaW1hcnkgY3V0YW5lb3VzIENEMzArIFQtY2VsbCBseW1waG9wcm9saWZlcmF0aXZlIGRpc29yZGVyIAogICMgTHltcGhvbWF0b2lkIHBhcHVsb3NpcyAoQzQ0Ll8pLCBQcmltYXJ5IGN1dGFuZW91cyBhbmFwbGFzdGljIGxhcmdlIGNlbGwsCiAgIyBseW1waG9tYSAoQzQ0Ll8pLCBQcmltYXJ5IGN1dGFuZW91cyBDRDMwKyBsYXJnZSBULWNlbGwgbHltcGhvbWEgKEM0NC5fKQoKCiMiOTcyNiIgPSBQcmltYXJ5IGN1dGFuZW91cyBnYW1tYS1kZWx0YSBULWNlbGwgbHltcGhvbWEKCmhpc3RvX2NvZGUgPC0gYygiOTcwOCIpCgpiZWhhdmlvcl9jb2RlIDwtIGMoIjMiKQoKZGF0YSA8LSBkYXQgJT4lCiAgICAgICAgZmlsdGVyKEJFSEFWSU9SICVpbiUgYmVoYXZpb3JfY29kZSkgJT4lCiAgICAgICAgZmlsdGVyKFBSSU1BUllfU0lURSAlaW4lIHNpdGVfY29kZSkgJT4lCiAgICAgICAgZmlsdGVyKEhJU1RPTE9HWSAlaW4lIGhpc3RvX2NvZGUpICU+JQogICAgICAgICNmaWx0ZXIoQUdFID49IDE4KSAlPiUKICAgICAgICBmaWx0ZXIoaXMubmEoUFVGX1ZJVEFMX1NUQVRVUykgPT0gRkFMU0UpICU+JQogICAgICAgIGZpbHRlcihpcy5uYShEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMpID09IEZBTFNFKSAgJT4lCiAgICAgICAgZmlsdGVyKFNFUVVFTkNFX05VTUJFUiA9PSAiMDAiKSAKCiNmaWxlX3BhdGggPC0gYygiL1VzZXJzL2JlYXN0YXRsaWZlL0dvb2dsZSBEcml2ZS9QZW5uL1Jlc2VhcmNoL0JhcmJpZXJpL05DREIiKQojc2F2ZShkYXRhLAojICAgICAgZmlsZSA9IHBhc3RlMChmaWxlX3BhdGgsICIvQ1RDTF9kYXRhLlJkYSIpKQpgYGAKCmBgYHtyIGxvYWREYXRhfQojbG9hZCgiU1BUQ0xfZGF0YS5SZGEiKQpgYGAKCgpEYXRhIGluY2x1ZGluZyBza2luIHR1bW9ycyB3YXMgb2J0YWluZWQgZnJvbSB0aGUgTkNCRCBvbiBPY3RvYmVyIDcsIDIwMTkuIENhc2VzIHRoYXQgd2VyZSBpbmNsdWRlZCBpbiB0aGlzIGFuYWx5c2lzIHdlcmUgdGhvc2Ugd2l0aDoKCjEuIFNpdGUgY29kZXM6IGByIHNpdGVfY29kZWAKMi4gSGlzdG9sb2d5IGNvZGVzOiBgciBoaXN0b19jb2RlYAozLiBCZWhhdmlvciBjb2RlczogYHIgYmVoYXZpb3JfY29kZWAKCgpQYXRpZW50cyB3ZXJlIGV4Y2x1ZGVkIGlmIHRoZXkgZGlkbid0IGhhdmUgdmFsdWVzIGZvciBlaXRoZXIgZm9sbG93IHVwIG9yIHZpdGFsIHN0YXR1cy4KClBhdGllbnRzIHdlcmUgZXhjbHVkZWQgaWYgdGhleSBoYWQgc3VyZ2VyeSB0byBhIGRpc3RhbnQgc2l0ZSB1c2luZyBgUlhfU1VNTV9TVVJHX09USF9SRUdESVNgLiBUaGlzIHdhcyBkb25lIHRvIGF2b2lkIGNvbmZvdW5kaW5nIG9mIGRpZmZlcmVudCBzdXJnaWNhbCBwcm9jZWR1cmVzLiBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHN1cmdlcnkgYXQgdGhlIHByaW1hcnkgc2l0ZS4gVGhlc2UgZGlzdGFudCBzaXRlIHN1cmdlcmllcyB3ZXJlIGJlaW5nIGNvdW50ZWQgaW4gdGhlIHN1cmdlcnkvcmFkaWF0aW9uIHNlcXVlbmNlIGFuZCB0aHVzIHRvIHNpbXBsaWZ5IGFuYWx5c2lzIHRoZXkgd2VyZSByZW1vdmVkLiAKCmBgYHtyfQoKZGF0YSAlPiUKICAgICAgICBDcmVhdGVUYWJsZU9uZShkYXRhID0gLiwKICAgICAgICAgICAgICAgICAgICAgdmFycyA9IGMoIlJYX1NVTU1fU1VSR19PVEhfUkVHRElTIiksCiAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVOQSA9IFRSVUUpICU+JQogICAgICAgIHByaW50KC4sCiAgICAgICAgICAgICAgc2hvd0FsbExldmVscyA9IFRSVUUpCgpkYXRhIDwtIGRhdGEgJT4lCiAgICAgICAgZmlsdGVyKFJYX1NVTU1fU1VSR19PVEhfUkVHRElTID09ICIwIikgCmBgYAoKClJhY2Ugd2FzIGdyb3VwZWQgYXMgd2hpdGUsIGJsYWNrLCBhc2lhbiwgb3RoZXIvdW5rbm93bgpTdGFnZSB3YXMgZ3JvdXBlZCBpbnRvIDAsIEksIElJLCBJSUksIElWLCBOQV9Vbmtub3duLCBzdGFnZSAwIHdhcyByZW1vdmVkCldoZXRoZXIgc3VyZ2VyeSB3YXMgcGVyZm9ybWVkIHdhcyBiYXNlZCBvbiB0aGUgYFJFQVNPTl9GT1JfTk9fU1VSR0VSWWAgdmFyaWFibGUuIFRoZSBgU1VSR0VSWV9ZTmAgdmFyaWFibGUgd2FzIGNsYXNzaWZpZWQgYXMgJ1llcycsICdObycsIG9yICdVbmtub3duJy4KCgpXaGV0aGVyIHJhZGlhdGlvbiB3YXMgcGVyZm9ybWVkIHdhcyBiYXNlZCBvbiB0aGUgYFJFQVNPTl9GT1JfTk9fUkFESUFUSU9OYCB2YXJpYWJsZS4gVGhlIGBSQURJQVRJT05fWU5gIHZhcmlhYmxlIHdhcyBjbGFzc2lmaWVkIGFzICdZZXMnLCAnTm8nLCBvciAnVW5rbm93bicuCgoKCiNUYWJsZSBvZiB2YXJpYWJsZXMgZm9yIGFsbCBjYXNlczoKCmBgYHtyfQpkYXRhIDwtIGRhdGEgJT4lIGRyb3BsZXZlbHMoKQoKcF90YWJsZShkYXRhLAogICAgICAgIHZhcnMgPSBjKCJGQUNJTElUWV9UWVBFX0YiLCAiRkFDSUxJVFlfTE9DQVRJT05fRiIsICJGQUNJTElUWV9HRU9HUkFQSFkiLCAgIkFHRSIsICJBR0VfRiIsICJBR0VfNDAiLAogICAgICAgICAgICAgICAgICJTRVhfRiIsICJSQUNFX0YiLCAiSElTUEFOSUMiLCAiSU5TVVJBTkNFX0YiLCAKICAgICAgICAgICAgICAgICAiSU5DT01FX0YiLCAiRURVQ0FUSU9OX0YiLCAiVV9SX0YiLCAiQ1JPV0ZMWSIsICJDRENDX1RPVEFMX0JFU1QiLAogICAgICAgICAgICAgICAgICJTSVRFX1RFWFQiLCAgIkhJU1RPTE9HWSIsICJCRUhBVklPUiIsICJHUkFERV9GIiwgCiAgICAgICAgICAgICAgICAgIkRYX1NUQUdJTkdfUFJPQ19EQVlTIiwgIlROTV9DTElOX1QiLCAiVE5NX0NMSU5fTiIsICJUTk1fQ0xJTl9NIiwKICAgICAgICAgICAgICAgICAiVE5NX0NMSU5fU1RBR0VfR1JPVVAiLCAiVE5NX1BBVEhfVCIsICJUTk1fUEFUSF9OIiwgIlROTV9QQVRIX00iLAogICAgICAgICAgICAgICAgICJUTk1fUEFUSF9TVEFHRV9HUk9VUCIsICJEWF9SWF9TVEFSVEVEX0RBWVMiLCAiRFhfU1VSR19TVEFSVEVEX0RBWVMiLAogICAgICAgICAgICAgICAgICJEWF9ERUZTVVJHX1NUQVJURURfREFZUyIsICJNQVJHSU5TIiwgIk1BUkdJTlNfWU4iLCAiU1VSR19ESVNDSEFSR0VfREFZUyIsCiAgICAgICAgICAgICAgICAgIlJFQURNX0hPU1BfMzBfREFZU19GIiwgIlJYX1NVTU1fUkFESUFUSU9OX0YiLCAiUFVGXzMwX0RBWV9NT1JUX0NEX0YiLAogICAgICAgICAgICAgICAgICJQVUZfOTBfREFZX01PUlRfQ0RfRiIsICJEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMiLCAKICAgICAgICAgICAgICAgICAiTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT05fRiIsICJSWF9IT1NQX1NVUkdfQVBQUl8yMDEwX0YiLCAiU1VSR19SQURfU0VRIiwKICAgICAgICAgICAgICAgICAiU1VSR19SQURfU0VRX0MiLCAiU1VSR0VSWV9ZTiIsICJSQURJQVRJT05fWU4iLCAiQ0hFTU9fWU4iLCAiSU1NVU5PX1lOIiwgIlR4X1lOIiwgIm1ldHNfYXRfZHgiLAogICAgICAgICAgICAgICAgICJNRURJQ0FJRF9FWFBOX0NPREUiLCAiRVhQTl9HUk9VUCIsICJZRUFSX09GX0RJQUdOT1NJUyIpKQpgYGAKCgoKYGBge3J9CgpwcmVFeHBNZWRpY2FyZSAgPC0gbnJvdyhkYXRhICU+JSBmaWx0ZXIoRVhQTl9HUk9VUCA9PSAiUHJlLUV4cGFuc2lvbiIgJiBJTlNVUkFOQ0VfRiA9PSAiTWVkaWNhcmUiKSkKcG9zdEV4cE1lZGljYXJlIDwtIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlBvc3QtRXhwYW5zaW9uIiAmIElOU1VSQU5DRV9GID09ICJNZWRpY2FyZSIpKQoKIyBwID0gMC4yNSB3aGVuIGNvbXBhcmluZyBjaGFuZ2UgaW4gcHJvcG9ydGlvbiBvZiBwYXRpZW50cyB3aXRoIE1lZGljYXJlIGJlZm9yZSBhbmQgYWZ0ZXIgQUNBIGV4cGFuc2lvbgpwcm9wLnRlc3QoYyhwcmVFeHBNZWRpY2FyZSwgcG9zdEV4cE1lZGljYXJlKSwgCiAgICAgICAgICBjKG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlByZS1FeHBhbnNpb24iKSksIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlBvc3QtRXhwYW5zaW9uIikpKSkKCnByZUV4cE5vSW5zdXJhbmNlIDwtIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlByZS1FeHBhbnNpb24iKSAlPiUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoSU5TVVJBTkNFX0YgPT0gIk5vbmUiKSkKcG9zdEV4cE5vSW5zdXJhbmNlIDwtIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlBvc3QtRXhwYW5zaW9uIikgJT4lIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcihJTlNVUkFOQ0VfRiA9PSAiTm9uZSIpKQoKIyBTaWduaWZpY2FudCBkZWNyZWFzZSBpbiB0aGUgb3ZlcmFsbCBwcm9wb3J0aW9uIG9mIHBhdGllbnRzIHdpdGhvdXQgaW5zdXJhbmNlIGFmdGVyIEFDQSBleHBhbnNpb24gCnByb3AudGVzdChjKHByZUV4cE5vSW5zdXJhbmNlLCBwb3N0RXhwTm9JbnN1cmFuY2UpLCAKICAgICAgICAgIGMobnJvdyhkYXRhICU+JSBmaWx0ZXIoRVhQTl9HUk9VUCA9PSAiUHJlLUV4cGFuc2lvbiIpKSwgbnJvdyhkYXRhICU+JSBmaWx0ZXIoRVhQTl9HUk9VUCA9PSAiUG9zdC1FeHBhbnNpb24iKSkpKQoKcF90YWJsZShub19FeGNsdWRlcywgc3RyYXRhID0gIkVYUE5fR1JPVVAiLCB2YXJzID0gIkRYX1JYX1NUQVJURURfREFZUyIpCgpkYXRhIDwtIGRhdGEgJT4lIG11dGF0ZShJbnN1cmVkID0gSU5TVVJBTkNFX0YgIT0gIlVua25vd24iKQoKYGBgCgoKCgojS2FwbGFuIE1laWVyIEFuYWx5c2lzCgoKIyNBbGwKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkFsbCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0ZhY2lsaXR5IFR5cGUKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiRkFDSUxJVFlfVFlQRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjRmFjaWxpdHkgTG9jYXRpb24KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkZBQ0lMSVRZX0xPQ0FUSU9OX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNGYWNpbGl0eSBHZW9ncmFwaHkKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkZBQ0lMSVRZX0dFT0dSQVBIWSIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0FnZSBHcm91cAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQUdFX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNBZ2UgR3JvdXAKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQUdFXzQwIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjR2VuZGVyCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJTRVhfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1JBQ0VfRgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUkFDRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjSGlzcGFuaWMKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkhJU1BBTklDIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjSW5zdXJhbmNlIFN0YXR1cwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiSU5TVVJBTkNFX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNPdmVyYWxsIFN1cnZpdmFsIHByZS9wb3N0LUFDQSBleHBhbnNpb24KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkVYUE5fR1JPVVAiLCBkYXRhX2ltcCA9IG5vX0V4Y2x1ZGVzKQpgYGAKCgo8IS0tICMjSW5jb21lIC0tPgoKPCEtLSBgYGB7cn0gLS0+CjwhLS0gY2xhc3MoZGF0YSRJTkNPTUVfRikgLS0+CjwhLS0gdW5pX3Zhcih0ZXN0X3ZhciA9ICJJTkNPTUVfRiIsIGRhdGFfaW1wID0gZGF0YSkgLS0+CjwhLS0gYGBgIC0tPgoKIyNFZHVjYXRpb24KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkVEVUNBVElPTl9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjVXJiYW4vUnVyYWwKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlVfUl9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQ2xhc3MgKHRyZWF0bWVudCBhdCBwZXJmb3JtaW5nIGZhY2lsaXR5KQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQ0xBU1NfT0ZfQ0FTRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjWWVhcgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiWUVBUl9PRl9ESUFHTk9TSVMiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNQcmltYXJ5IFNpdGUKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlNJVEVfVEVYVCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgoKIyNIaXN0b2xvZ3kKCmBgYHtyfQojdW5pX3Zhcih0ZXN0X3ZhciA9ICJISVNUT0xPR1lfRl9MSU0iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKPCEtLSAjI0JlaGF2aW9yIC0tPgoKPCEtLSBgYGB7cn0gLS0+CjwhLS0gdW5pX3Zhcih0ZXN0X3ZhciA9ICJCRUhBVklPUiIsIGRhdGFfaW1wID0gZGF0YSkgLS0+CjwhLS0gYGBgIC0tPgoKIyNHcmFkZQoKYGBge3J9CiN1bmlfdmFyKHRlc3RfdmFyID0gIkdSQURFX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNDbGluaWNhbCBUIFN0YWdlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fQ0xJTl9UIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQ2xpbmljYWwgTiBTdGFnZQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVE5NX0NMSU5fTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgo8IS0tICMjQ2xpbmljYWwgTSBTdGFnZSAtLT4KCjwhLS0gYGBge3J9IC0tPgo8IS0tIHVuaV92YXIodGVzdF92YXIgPSAiVE5NX0NMSU5fTSIsIGRhdGFfaW1wID0gZGF0YSkgLS0+CjwhLS0gYGBgIC0tPgoKIyNDbGluaWNhbCBTdGFnZSBHcm91cAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVE5NX0NMSU5fU1RBR0VfR1JPVVAiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNQYXRob2xvZ2ljIFQgU3RhZ2UKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9QQVRIX1QiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNQYXRob2xvZ2ljIE4gU3RhZ2UKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9QQVRIX04iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNQYXRob2xvZ2ljIE0gU3RhZ2UKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9QQVRIX00iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNQYXRob2xvZ2ljIFN0YWdlIEdyb3VwCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fUEFUSF9TVEFHRV9HUk9VUCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI01hcmdpbnMKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiTUFSR0lOUyIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI01hcmdpbnMgWWVzL05vCmBgYHtyfQojdW5pX3Zhcih0ZXN0X3ZhciA9ICJNQVJHSU5TX1lOIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjMzAgRGF5IFJlYWRtaXNzaW9uCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJSRUFETV9IT1NQXzMwX0RBWVNfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1JhZGlhdGlvbiBUeXBlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJSWF9TVU1NX1JBRElBVElPTl9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCgojI0x5bXBob3Zhc2N1bGFyIEludmFzaW9uCgpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT05fRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0VuZG9zY29waWMvUm9ib3RpYwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUlhfSE9TUF9TVVJHX0FQUFJfMjAxMF9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjU3VyZ2VyeSBSYWRpYXRpb24gU2VxdWVuY2UgCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJTVVJHX1JBRF9TRVEiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNTdXJnZXJ5IFllcy9ObwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiU1VSR0VSWV9ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1JhZGlhdGlvbiBZZXMvTm8KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlJBRElBVElPTl9ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0NoZW1vIFllcy9ObwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQ0hFTU9fWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKCiMjVHJlYXRtZW50IFllcy9ObwpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUeF9ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI01ldGFzdGFzZXMgYXQgRHgKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAibWV0c19hdF9keF9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCjwhLS0gIyNUdW1vciBTaXplIC0tPgoKPCEtLSBgYGB7cn0gLS0+CjwhLS0gdW5pX3Zhcih0ZXN0X3ZhciA9ICJUX1NJWkUiLCBkYXRhX2ltcCA9IGRhdGEpIC0tPgo8IS0tIGBgYCAtLT4KCiNUdW1vciBzcGVjaWZpYyBWYXJpYWJsZXMKCgojIyNOb2RlIFNpemUKCgojQ294IFByb3BvcnRpb25hbCBIYXphcmQgUmF0aW8KCiMjTW9kZWwgIzEKCiMjI0Z1bGwgYW5hbHlzaXMKCmBgYHtyfQptb2RlbF9vbmUgPC0gY294cGgoU3VydihEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMsIFBVRl9WSVRBTF9TVEFUVVMgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgfiBTVVJHX1JBRF9TRVEgKyBJTlNVUkFOQ0VfRiArIEFHRSArIFNFWF9GICsgUkFDRV9GICsgSU5DT01FX0YgKyBVX1JfRiArCiAgICAgICAgICAgICAgICAgICAgICBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgRURVQ0FUSU9OX0YsCiAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhKQptb2RlbF9vbmUgJT4lIHN1bW1hcnkoKQoKCmBgYAoKIyMjU3VtbWFyeSBvZiBNb2RlbAoKYGBge3J9Cm1vZGVsX29uZSAlPiUKICAgICAgICB0aWR5KC4sIGV4cG9uZW50aWF0ZSA9IFRSVUUpICU+JQogICAgICAgIHNlbGVjdCh0ZXJtLCBlc3RpbWF0ZSwgY29uZi5sb3csIGNvbmYuaGlnaCwgcC52YWx1ZSkgJT4lCiAgICAgICAgcmVuYW1lKFZhcmlhYmxlID0gdGVybSwKICAgICAgICAgICAgICAgSGF6YXJkX1JhdGlvID0gZXN0aW1hdGUpICU+JQogICAgICAgIHRibF9kZiAlPiUKICAgICAgICBwcmludChuID0gbnJvdyguKSkKCmBgYAoKCiMjIExpbmVhciBSZWdyZXNzaW9uIApgYGB7cn0KCiNvbmx5IGluY2x1ZGUgcm93cyB3aXRoIGtub3duIHRyZWF0bWVudCBpbmZvcm1hdGlvbiwgbiA9IDgyLiA1IGV4Y2x1ZGVkLgpkYXRhMiA8LSBkYXRhICU+JSBmaWx0ZXIoU1VSR0VSWV9ZTiAhPSAiVWtuIiAmIFJBRElBVElPTl9ZTiAhPSAiVWtuIgogICAgICAgICAgICAgICAgICAgICAgICAgJiBDSEVNT19ZTiAhPSAiVWtuIikKCiMgaW5jbHVkZSBvbmx5IHZhcmlhYmxlcyB3aXRoIGRhdGEgYXZhaWxhYmxlIGZvciBhdCBsZWFzdCA3NSUgb2YgY2FzZXMgCiMgZnJvbSB0aGUgZm9sbG93aW5nIHNldCBvZiB2YXJpYWJsZXMgb2YgaW50ZXJlc3Q6CgojIyBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9HRU9HUkFQSFkgKyBDUk9XRkxZICsgCiMjICAgICAgICAgICAgICAgICBEWF9TVEFHSU5HX1BST0NfREFZUyArIAojIyAgICAgICAgICAgICAgICAgQ0hFTU9fWU4gKyBSQURJQVRJT05fWU4gKyBTVVJHRVJZX1lOICsgSU1NVU5PX1lOICsKIyMgICAgICAgICAgICAgICAgIEFHRSArIFNFWF9GICsgUkFDRV9GICsgSElTUEFOSUMgKyBJTlNVUkFOQ0VfRiArIElOQ09NRV9GICsgCiMjICAgICAgICAgICAgICAgICBFRFVDQVRJT05fRiArIFlFQVJfT0ZfRElBR05PU0lTICsgU0lURV9URVhUICsgR1JBREVfRgoKbGVuZ3RoKHdoaWNoKGlzLm5hKGRhdGEyJEZBQ0lMSVRZX0xPQ0FUSU9OX0YpKSkKCiMgZXhjbHVkZWQgdGhlIGZvbGxvd2luZyBpbiB0aGlzIGFuYWx5c2lzIGR1ZSB0byBtaXNzaW5nIGRhdGE6IAojIEZBQ0lMSVRZX1RZUEVfRiwgRkFDSUxJVFlfR0VPR1JBUEhZX0YsIEZBQ0lMSVRZX0xPQ0FUSU9OX0YsIAojIChEWF9TVEFHSU5HX1BST0NfREFZUyBtaXNzaW5nIGluIDE3IGNhc2VzLCBidXQgc3RpbGwgaW5jbHVkZWQgaW4gbW9kZWwpCgpmaXRfc3VydiA8LSBsbShEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMgfgogICAgICAgICAgICAgICAgIERYX1NUQUdJTkdfUFJPQ19EQVlTICsgQ1JPV0ZMWSArIAogICAgICAgICAgICAgICAgIENIRU1PX1lOICsKICAgICAgICAgICAgICAgICBTRVhfRiArIFJBQ0VfRiArIAogICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICsgU0lURV9URVhUICsgR1JBREVfRiwKICAgZGF0YSA9IGRhdGEyKQoKc3VtbWFyeShmaXRfc3VydikgIyBSXjIgPSAuMzE1NSwgcCA9IDAuMDA3MzYyCgoKIyB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyB3ZXJlIGV4Y2x1ZGVkIHRvIAojIGltcHJvdmUgdGhlIFItc3F1YXJlZCBvZiB0aGUgcmVncmVzc2lvbiAoaW5pdGlhbGx5IFJeMiA9IDAuMTc4NSk6CiMgUkFESUFUSU9OX1lOLCBTVVJHRVJZX1lOLCBJTU1VTk9fWU4sIElOQ09NRV9GLCBJTlNVUkFOQ0VfRiwgRURVQ0FUSU9OX0YsIEFHRQpgYGAKIyBQcmVkaWN0aW9uIExvZ2lzdGljIFJlZ3Jlc3Npb24gTW9kZWxzCgojIyBTdXJnZXJ5CmBgYHtyfQoKbm9fVWtucyA8LSBkYXRhICU+JQogIGZpbHRlcihTVVJHRVJZX1lOICE9ICJVa24iKSAlPiUgCiAgZHJvcGxldmVscygpICU+JSAKICBtdXRhdGUoU1VSR0VSWV9ZTiA9IGFzLmxvZ2ljYWwoU1VSR0VSWV9ZTikpCgpmaXRfc3VyZyA8LSBnbG0oU1VSR19URiB+IEFHRV9GICsgUFJJTUFSWV9TSVRFICsgR1JBREVfRiArIFNFWF9GICsgUkFDRV9GICsgSU5TVVJBTkNFX0YgKwogICAgICAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArIEVEVUNBVElPTl9GICsgRVhQTl9HUk9VUCArIFlFQVJfT0ZfRElBR05PU0lTLAogICBkYXRhID0gbm9fVWtucykKCnN1bW1hcnkoZml0X3N1cmcpCgpleHAoY2JpbmQoIk9kZHMgcmF0aW8iID0gY29lZihmaXRfc3VyZyksIGNvbmZpbnQuZGVmYXVsdChmaXRfc3VyZywgbGV2ZWwgPSAwLjk1KSkpCmBgYAoKIyMgQ2hlbW8KYGBge3J9Cm5vX1VrbnMgPC0gZGF0YSAlPiUKICBmaWx0ZXIoQ0hFTU9fWU4gIT0gIlVrbiIpICU+JSAKICBkcm9wbGV2ZWxzKCkgJT4lIAogIG11dGF0ZShDSEVNT19ZTiA9IGZjdF9yZWNvZGUoQ0hFTU9fWU4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMCIgPSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEiID0gIlllcyIpKSAlPiUgCiAgbXV0YXRlKENIRU1PX1lOID0gYXMuaW50ZWdlcihDSEVNT19ZTikpICU+JSAKICBtdXRhdGUoQ0hFTU9fWU4gPSBDSEVNT19ZTiAtIDEpCgpmaXRfY2hlbW8gPC0gZ2xtKENIRU1PX1lOIH4gQUdFX0YgKyBQUklNQVJZX1NJVEUgKyBHUkFERV9GICsgU0VYX0YgKyBSQUNFX0YgKyBJTlNVUkFOQ0VfRiArCiAgICAgICAgICAgICAgICAgICAgICBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgRURVQ0FUSU9OX0YgKyBFWFBOX0dST1VQICsgWUVBUl9PRl9ESUFHTk9TSVMsCiAgIGRhdGEgPSBub19Va25zKQoKc3VtbWFyeShmaXRfY2hlbW8pCgpleHAoY2JpbmQoIk9kZHMgcmF0aW8iID0gY29lZihmaXRfY2hlbW8pLCBjb25maW50LmRlZmF1bHQoZml0X2NoZW1vLCBsZXZlbCA9IDAuOTUpKSkKYGBgCgojIyBSYWRpYXRpb24KYGBge3J9Cm5vX1VrbnMgPC0gZGF0YSAlPiUKICBmaWx0ZXIoUkFESUFUSU9OX1lOICE9ICJVa24iKSAlPiUKICBkcm9wbGV2ZWxzKCkgJT4lCiAgbXV0YXRlKFJBRElBVElPTl9ZTiA9IGZjdF9yZWNvZGUoUkFESUFUSU9OX1lOLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjAiID0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxIiA9ICJZZXMiKSklPiUgCiAgbXV0YXRlKFJBRElBVElPTl9ZTiA9IGFzLmludGVnZXIoUkFESUFUSU9OX1lOKSkgJT4lIAogIG11dGF0ZShSQURJQVRJT05fWU4gPSBSQURJQVRJT05fWU4gLSAxKQoKCmZpdF9yYWRzIDwtIGdsbShSQURJQVRJT05fWU4gfiBBR0VfRiArIFBSSU1BUllfU0lURSArIEdSQURFX0YgKyBTRVhfRiArIFJBQ0VfRiArIElOU1VSQU5DRV9GICsKICAgICAgICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0xPQ0FUSU9OX0YgKyBFRFVDQVRJT05fRiArIEVYUE5fR1JPVVAgKyBZRUFSX09GX0RJQUdOT1NJUywKICAgZGF0YSA9IG5vX1VrbnMpCgoKc3VtbWFyeShmaXRfcmFkcykKCmV4cChjYmluZCgiT2RkcyByYXRpbyIgPSBjb2VmKGZpdF9yYWRzKSwgY29uZmludC5kZWZhdWx0KGZpdF9yYWRzLCBsZXZlbCA9IDAuOTUpKSkKYGBgCgojIyBJbW11bm90aGVyYXB5CmBgYHtyfQpub19Va25zIDwtIGRhdGEgJT4lCiAgZmlsdGVyKElNTVVOT19ZTiAhPSAiVWtuIikgJT4lCiAgZHJvcGxldmVscygpICU+JQogIG11dGF0ZShJTU1VTk9fWU4gPSBmY3RfcmVjb2RlKElNTVVOT19ZTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwIiA9ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMSIgPSAiWWVzIikpJT4lIAogIG11dGF0ZShJTU1VTk9fWU4gPSBhcy5pbnRlZ2VyKElNTVVOT19ZTikpICU+JSAKICBtdXRhdGUoSU1NVU5PX1lOID0gSU1NVU5PX1lOIC0gMSkKCgpmaXRfaW1tdW5vIDwtIGdsbShJTU1VTk9fWU4gfiBBR0VfRiArIFBSSU1BUllfU0lURSArIEdSQURFX0YgKyBTRVhfRiArIFJBQ0VfRiArIElOU1VSQU5DRV9GICsKICAgICAgICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0xPQ0FUSU9OX0YgKyBFRFVDQVRJT05fRiArIEVYUE5fR1JPVVAgKyBZRUFSX09GX0RJQUdOT1NJUywKICAgZGF0YSA9IG5vX1VrbnMpCgoKc3VtbWFyeShmaXRfaW1tdW5vKQoKZXhwKGNiaW5kKCJPZGRzIHJhdGlvIiA9IGNvZWYoZml0X2ltbXVubyksIGNvbmZpbnQuZGVmYXVsdChmaXRfaW1tdW5vLCBsZXZlbCA9IDAuOTUpKSkKYGBgCgojIyBBbnkgVHJlYXRtZW50CmBgYHtyfQpub19Va25zIDwtIGRhdGEgJT4lCiAgZmlsdGVyKFR4X1lOICE9ICJVa24iKSAlPiUKICBkcm9wbGV2ZWxzKCkKCgpmaXRfdHggPC0gZ2xtKFR4X1lOIH4gQUdFX0YgKyBHUkFERV9GICsgU0VYX0YgKyBSQUNFX0YgKyBJTlNVUkFOQ0VfRiArCiAgICAgICAgICAgICAgICAgICAgICBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgRURVQ0FUSU9OX0YgKyBZRUFSX09GX0RJQUdOT1NJUywKICAgZGF0YSA9IG5vX1VrbnMpCgoKc3VtbWFyeShmaXRfdHgpCgpleHAoY2JpbmQoIk9kZHMgcmF0aW8iID0gY29lZihmaXRfcmFkcyksIGNvbmZpbnQuZGVmYXVsdChmaXRfdHgsIGxldmVsID0gMC45NSkpKQpgYGAKCiMjIE1ldGFzdGFzaXMgYXQgVGltZSBvZiBEaWFnbm9zaXMKYGBge3J9CgpmaXRfbWV0cyA8LSBnbG0obWV0c19hdF9keF9GIH4gQUdFX0YgKyBQUklNQVJZX1NJVEUgKyBHUkFERV9GICsgU0VYX0YgKyBSQUNFX0YgKyBJTlNVUkFOQ0VfRiArCiAgICAgICAgICAgICAgICAgICAgICBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgRURVQ0FUSU9OX0YgKyBFWFBOX0dST1VQICsgWUVBUl9PRl9ESUFHTk9TSVMsCiAgIGRhdGEgPSBkYXRhKQoKc3VtbWFyeShmaXRfbWV0cykKCmV4cChjYmluZCgiT2RkcyByYXRpbyIgPSBjb2VmKGZpdF9tZXRzKSwgY29uZmludC5kZWZhdWx0KGZpdF9tZXRzLCBsZXZlbCA9IDAuOTUpKSkKYGBg